home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 3940.ZIP / PWEZ.ZIP / WIND_REZ.DOC < prev   
Text File  |  1993-06-01  |  306KB  |  8,119 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                                 WINDOWS R-E-Z
  26.                                 VER. 6.10
  27.  
  28.  
  29.                                 CONNECT Software
  30.                                 6192 Fawn Meadow
  31.                                 Farmington, NY   14425
  32.  
  33.                                 Richard Magnanti
  34.                                 (716) 924-3439
  35.  
  36.                                 CPS:    71020,2040
  37.                                 GENIE:  R.MAGNANTI
  38.                                 DELPHI: MAGNANTI
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.                                COPYRIGHT (c) 1988 - 1993 BY:
  50.                                CONNECT Software
  51.                                ALL RIGHTS RESERVED
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.                                     CONTENTS
  74.  
  75.           Differences in versions of WINDOWS R-E-Z ----------------- 1
  76.  
  77.           Important notes for BASIC 7.1 and VB 1.0 for DOS users-- 2-3
  78.  
  79.           General overview ( list of procedures included ) ------- 4-8
  80.  
  81.           System and programming requirements ---------------------- 9
  82.  
  83.           Getting started ----------------------------------------- 10
  84.  
  85.           Windowing routines ----------------------------------- 11-21
  86.                    The Active Window ------------------------------ 11
  87.              1.00  SETWIND ------------------------------------- 11-12
  88.              1.01  MAKEWIND ------------------------------------ 12-14
  89.              1.02  CHNGWIND --------------------------------------- 15
  90.              1.03  PRINTW ----------------------------------------- 15
  91.              1.04  PRINTWHOT ----------------------------------- 15-16
  92.              1.05  SAVEWIND --------------------------------------- 16
  93.              1.06  RESAVE -------------------------------------- 16-17
  94.              1.07  RSTRWIND --------------------------------------- 17
  95.              1.08  DELWIND ------------------------------------- 17-18
  96.              1.09  CLRWIND ---------------------------------------- 18
  97.              1.10  NEWCOLOR --------------------------------------- 18
  98.              1.11  LINEW --------------------------------------- 18-19
  99.              1.12  BOXW ------------------------------------------- 19
  100.              1.13  WAVAIL% ---------------------------------------- 20
  101.              1.14  WINDSTATUS ------------------------------------- 21
  102.  
  103.           Pulldown windows ------------------------------------- 22-32
  104.              2.00  SETPULL ------------------------------------- 22-24
  105.                    Example: SETPULL ---------------------------- 24-25
  106.              2.01  PRINTMENUBAR -------------------------------- 25-26
  107.              2.02  PULLDOWN ------------------------------------ 26-30
  108.              2.03  RSTRPULL ------------------------------------ 30-32
  109.              2.04  CHNGPULL --------------------------------------- 32
  110.  
  111.           Scroll windows --------------------------------------- 33-53
  112.              3.00  SCRLWIND ------------------------------------ 33-42
  113.                    SCRLWIND example ( Auto-exit ) -------------- 42-43
  114.              3.01  B4SCRL -------------------------------------- 43-52
  115.              3.02  SCROLLPRINT --------------------------------- 52
  116.              3.03  MARKED% ------------------------------------- 52-53
  117.  
  118.           Input routines --------------------------------------- 54-81
  119.              4.00  INPTINIT ------------------------------------ 54-55
  120.              4.01  B4INPT -------------------------------------- 55-57
  121.              4.02  INPTWIND ------------------------------------ 57-61
  122.              4.03  RSTRINPT ------------------------------------ 61-62
  123.                    Example: INPTWIND ------------------------------ 63
  124.                    Multi-field Input Overview --------------------- 64
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.              4.04  SETINPT ---------------------------------------- 65
  140.              4.05  MAKEFIELD ----------------------------------- 66-69
  141.              4.06  MULTINPT ------------------------------------ 69-74
  142.                    Editing features for input routines ------------ 75
  143.              4.07  UPDATEFIELD ------------------------------------ 76
  144.              4.08  GETANS -------------------------------------- 76-78
  145.              4.09  CHOICEWIND% --------------------------------- 78-80
  146.              4.10  CHOICEBAR% ---------------------------------- 80-81
  147.  
  148.           Directory routines ----------------------------------- 82-87
  149.              5.00  GETDISK% --------------------------------------- 82
  150.              5.01  FINDPATH$ -------------------------------------- 82
  151.              5.02  SETDISK ---------------------------------------- 82
  152.              5.03  DISKSIZE --------------------------------------- 83
  153.              5.04  FINDDIR ------------------------------------- 83-85
  154.              5.05  EXEPATH$ --------------------------------------- 85
  155.                    A directory scroll window ( example ) ------- 86-87
  156.  
  157.           Keyboard and Mouse routines -------------------------- 88-92
  158.              6.00  GETAKEY%  -------------------------------------- 88
  159.                    GETAKEY% example ------------------------------- 88
  160.              6.01  CLEARKB ---------------------------------------- 89
  161.              6.02  MOUSEON ---------------------------------------- 89
  162.              6.03  MOUSEHIDE -------------------------------------- 89
  163.              6.04  MOUSESHOW ----------------------------------- 89-90
  164.              6.05  MOUSEROW% -------------------------------------- 90
  165.              6.06  MOUSECOL% -------------------------------------- 90
  166.              6.07  MOUSEPOS --------------------------------------- 90
  167.              6.08  MOUSELIMIT ------------------------------------- 90
  168.              6.09  LBUTTON% --------------------------------------- 90
  169.              6.10  RBUTTON% --------------------------------------- 91
  170.              6.11  MOUSEINWIND% ----------------------------------- 91
  171.              6.12  MOUSEINMULT% ----------------------------------- 92
  172.  
  173.           Information line routines ---------------------------- 93-97
  174.              7.00 INFOLINE ---------------------------------------- 93
  175.              7.01 PRINTINFO ------------------------------------ 93-94
  176.              7.02 INFOFIXED --------------------------------------- 94
  177.              7.03 RSTRINFO ---------------------------------------- 94
  178.                    Examples: Info-line routines ---------------- 95-97
  179.  
  180.           Misc Routines --------------------------------------- 98-100
  181.              8.00  DOSOUND ---------------------------------------- 98
  182.              8.01  DISPLAYROWS% ----------------------------------- 98
  183.              8.02  PEEKASM& --------------------------------------- 98
  184.              8.03  GETCUR& ---------------------------------------- 98
  185.              8.04  SETCUR& ---------------------------------------- 99
  186.              8.05  CUROFF ----------------------------------------- 99
  187.              8.O6  WTIMER& ---------------------------------------- 99
  188.              8.07  TWOPOWEROF& ----------------------------------- 100
  189.              8.08  WVAL& ----------------------------------------- 100
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.           Program format ------------------------------------- 101-104
  207.  
  208.           Event Trapping ----------------------------------------- 105
  209.  
  210.           Description of files ------------------------------- 106-108
  211.  
  212.           Errors --------------------------------------------- 109-113
  213.  
  214.           Appendix ------------------------------------------- 114-117
  215.              Color attribute chart ------------------------------- 114
  216.              Multi-field code chart ------------------------------ 115
  217.              Border designation chart ---------------------------- 116
  218.              GETAKEY code values --------------------------------- 117
  219.  
  220.           Update policies ---------------------------------------- 118
  221.  
  222.           Restrictions and disclaimer ---------------------------- 119
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.                             ***************************
  272.                             *  NOTE ------ READ THIS! *
  273.                             ***************************
  274.  
  275.               The information in this documentation refers to the
  276.           enhanced version of WINDOWS R-E-Z.  Differences between the
  277.           QuickBasic 4.50, BASIC 7.1 (PDS) and Visual Basic for DOS
  278.           (VBDOS) versions are detailed.  The documentation can be used
  279.           for the unenhanced versions with the following exceptions.
  280.  
  281.  
  282.               1. MEMORY - Additional libraries are included in the
  283.           enhanced versions which do not contain error checking or
  284.           window status capability.  These libraries can be used after
  285.           the program is de-bugged and represent an opportunity for
  286.           considerable memory reduction.
  287.  
  288.                         - Additional libraries are included in the
  289.           enhanced versions which can be used for programs not requiring
  290.           event handling.  The libraries in the unenhanced versions allow
  291.           event handling.  Extra libraries for programs not requiring
  292.           event handling are not included in the unenhanced versions.
  293.           Modules compiled from the QB/QBX/VBDOS environment will use the
  294.           event handing switches ( /W or /V ) in the unenhanced versions
  295.           even if event handling is not used.  This produces larger and
  296.           slower programs.
  297.  
  298.  
  299.               2. The BASIC 7.1 and VBDOS unenhanced versions do not
  300.           allow the use of unnamed ( blank ) COMMON blocks.  The
  301.           enhanced version has provisions for the use of same.
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.           **********************************************************
  318.           **  For information on obtaining the enhanced version   **
  319.           **  of WINDOWS R-E-Z see the file ORDER.ME.             **
  320.           **********************************************************
  321.  
  322.  
  323.  
  324.  
  325.  
  326.                                        1
  327.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.              Important notes for BASIC 7.1 and VBDOS 1.00 users.
  338.  
  339.  
  340.           ENHANCED AND UNENHANCED VERSIONS:
  341.  
  342.           The /Ea option may be used when loading QBX or VBDOS.
  343.           This allows the use of expanded memory.
  344.  
  345.           Window memory resides in a separate segment of string space
  346.           reserved for strings placed in unnamed ( blank ) COMMON
  347.           blocks.  DO NOT USE BLANK COMMON BLOCKS IN YOUR PROGRAM.
  348.  
  349.           EXAMPLE: COMMON SHARED A$                ' NOT PERMITTED
  350.                    COMMON SHARED /BLOCKNAME/ A$    ' PERMITTED
  351.  
  352.  
  353.           Maximum window memory is 64k bytes.  Calls to MAKEWIND or
  354.           SAVEWIND requesting window memory in excess of 64k bytes
  355.           will result in an "Out of string space" error message.  As
  356.           64k represents sixteen full display windows (80 x 25 mode)
  357.           this limitation should not be restrictive.
  358.  
  359.  
  360.           The use of far strings is required.  This is the default for
  361.           programs compiled from the QBX environment   If the source
  362.           code is compiled on the command line the /Fs option must be
  363.           used with BC.  Unlike BASIC 7.1, VBDOS always uses far
  364.           strings.
  365.  
  366.  
  367.           ENHANCED VERSION ONLY:
  368.  
  369.           Additional object files PDSALT.OBJ or VBALT.OBJ are included
  370.           which allow the use of unnamed (blank) COMMON blocks.  They
  371.           must replace the object file PDSVBMEM.OBJ, which is included
  372.           in the BASIC 7.1 and VB for DOS libraries.  Window memory will
  373.           share main module string space after this change is made.  To
  374.           make this change;
  375.  
  376.           1. Make new library files. ( Back-up old library files first! )
  377.  
  378.           LIB PDSALL.LIB-PDSVBMEM.OBJ+PDSALT.OBJ;    ( BASIC 7.1 )
  379.           LIB PDSNER.LIB-PDSVBMEM.OBJ+PDSALT.OBJ;    ( BASIC 7.1 )
  380.           LIB PDSTRAP.LIB-PDSVBMEM.OBJ+PDSALT.OBJ;   ( BASIC 7.1 )
  381.           LIB PDSNETRP.LIB-PDSVBMEM.OBJ+PDSALT.OBJ;  ( BASIC 7.1 )
  382.  
  383.  
  384.           LIB VBALL.LIB-PDSVBMEM.OBJ+VBALT.OBJ;      ( VBDOS )
  385.           LIB VBNER.LIB-PDSVBMEM.OBJ+VBALT.OBJ;      ( VBDOS )
  386.           LIB VBTRAP.LIB-PDSVBMEM.OBJ+VBALT.OBJ;     ( VBDOS )
  387.           LIB VBNETRP.LIB-PDSVBMEM.OBJ+VBALT.OBJ;    ( VBDOS )
  388.  
  389.  
  390.  
  391.  
  392.                                        2
  393.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.           2. Make new quick-libraries. ( Back-up old quick-libraries! )
  404.  
  405.           LINK/Q PDSALL.LIB,PDSALL.QLB,,QBXQLB.LIB;     ( BASIC 7.1 )
  406.           LINK/Q PDSNER.LIB,PDSNER.QLB,,QBXQLB.LIB;     ( BASIC 7.1 )
  407.           LINK/Q PDSTRAP.LIB,PDSTRAP.QLB,,QBXQLB.LIB;   ( BASIC 7.1 )
  408.           LINK/Q PDSNETRP.LIB,PDSNETRP.QLB,,QBXQLB.LIB; ( BASIC 7.1 )
  409.  
  410.           LINK/Q VBALL.LIB,VBALL.QLB,,VBDOSQLB.LIB;     ( VBDOS )
  411.           LINK/Q VBNER.LIB,VBNER,,VBDOSQLB.LIB;         ( VBDOS )
  412.           LINK/Q VBTRAP.LIB,VBTRAP.QLB,,VBDOSQLB.LIB;   ( VBDOS )
  413.           LINK/Q VBNETRP.LIB,VBNETRP,,VBDOSQLB.LIB;     ( VBDOS )
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.                                        3
  459.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.                             *** GENERAL OVERVIEW ***
  470.  
  471.               WINDOWS R-E-Z is a collection of QuickBASIC and assembly
  472.           routines which provide users of QuickBASIC 4.50,  BASIC 7.1
  473.           ( PDS ), and Visual BASIC for DOS with a complete window
  474.           management system.  With WINDOWS R-E-Z users can make, save,
  475.           restore, and delete up to twenty windows.  The memory used to
  476.           save windowed areas is dynamically allocated and outside of
  477.           basic's normal data storage area leaving more room for the
  478.           basic programs data.  Windows are assigned a number from zero
  479.           to twenty.
  480.  
  481.                INPUT WINDOWS, MULTI-FIELD INPUT SCREENS, CHOICE WINDOWS,
  482.           CHOICE BARS and GET ANSWER WINDOWS all provide an excellent
  483.           source for user input.  Input fields may be alpha/numeric,
  484.           numeric, date or restricted.  Multi-field input fields may be
  485.           use to emulate "buttons".  Additional numerous options are
  486.           included for input fields.
  487.  
  488.               WINDOWS R-E-Z provides users the ability to incorporate
  489.           "PULLDOWN WINDOWS", emulating those used in the QuickBASIC
  490.           programming environment, in their programs.
  491.  
  492.               Directory routines find the default drive and path, disk
  493.           size and free space, and directory listing for any path.
  494.           File size, date, time, and attributes can also be found.
  495.  
  496.               Information line routines provide an easy means to print
  497.           messages, directions, or prompts, anyplace on the display.
  498.  
  499.               SCROLL WINDOWS may be used to scroll through small lists
  500.           or large databases.
  501.  
  502.               Also includes are numerous KEYBOARD and MOUSE routines.
  503.  
  504.               All of the routines require a minimal amount of initial-
  505.           ization and the resulting programs present a professional
  506.           appearance.
  507.  
  508.               Unlike many other basic "add-ons", WINDOWS R-E-Z
  509.           provides extensive error detection and reporting.
  510.  
  511.           Procedures included:
  512.  
  513.             SETWIND -------- Set up routine for windowing procedures.
  514.  
  515.             MAKEWIND ------- Makes a window.  Saves windowed area to
  516.                              window memory.  The window becomes the
  517.                              "active window".
  518.  
  519.             SAVEWIND ------- Saves a screen area to window memory.
  520.  
  521.  
  522.  
  523.  
  524.                                        4
  525.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.             RESAVE --------- Saves the active window.
  536.  
  537.             RSTRWIND ------- Restores a window area to the display.
  538.  
  539.             DELWIND -------- Deletes a window area from window memory.
  540.  
  541.             CHNGWIND ------- Changes the active window to another
  542.                              window.
  543.  
  544.             NEWCOLOR ------- Changes the print-to color of the active
  545.                              window for text printed by PRINTW.
  546.                              The print-to color is used by CLRWIND to
  547.                              clear the active window's interior.
  548.  
  549.             CLRWIND -------- Clears the interior of the active window.
  550.  
  551.             PRINTW --------- Prints text in the active window using
  552.                              the window's "print-to" color.
  553.  
  554.             PRINTWHOT ------ Prints text in the active window. One
  555.                              character is printed in a different color.
  556.  
  557.             LINEW ---------- Prints a line in the active window using
  558.                              the window's "print-to" color.
  559.  
  560.             BOXW ----------- Prints a box in the active window using
  561.                              the window's "print-to" color.
  562.  
  563.             WAVAIL% -------- (FUNCTION) Reports a window's availability.
  564.  
  565.             WINDSTATUS ----- Reports window memory status.
  566.  
  567.             B4SCRL --------- Sets exit keys, "marked entry string"
  568.                              scroll bar status, tag character color,
  569.                              and refresh status for a subsequent call
  570.                              to SCRLWIND.
  571.  
  572.             SCROLLPRINT ---  Allows a subsequent call to SCRLWIND to
  573.                              print the scroll window's selected entry
  574.                              at any screen location.
  575.  
  576.             SCRLWIND ------- Places a scrollable list in the active
  577.                              window.
  578.  
  579.             MARKED% -------- (FUNCTION) Returns position of marked
  580.                              items after a call to SCRLWIND.
  581.  
  582.             SETPULL -------- Set up routine for pulldown windows.
  583.  
  584.             PRINTMENUBAR --- Prints the pulldown menubar.
  585.  
  586.  
  587.  
  588.  
  589.  
  590.                                        5
  591.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.             PULLDOWN ------- Makes pulldown windows.  On exit the
  602.                              displayed pulldown window is the active
  603.                              pulldown window.
  604.  
  605.             RSTRPULL ------- Restores the area under the active
  606.                              pulldown window and menubar.  Deactivates
  607.                              the active pulldown window.
  608.  
  609.             CHNGPULL ------- Changes the color of, and disables or
  610.                              enables an item in a pulldown window.
  611.  
  612.             INPTINIT ------- Initializes input memory. Sets date format,
  613.                              decimal designator, and "exit keys".
  614.  
  615.             INPTWIND ------- Makes an input field with an optional
  616.                              window.  The field can be edited by
  617.                              the user.  On exit the displayed input
  618.                              line or window is the active input window.
  619.  
  620.  
  621.             RSTRINPT ------- Restores the area under the active input
  622.                              window to the display.  Deactivates the
  623.                              active input window.
  624.  
  625.             SETINPT -------- Set up routine for multi-field input
  626.                              screens.
  627.  
  628.             MAKEFIELD ------ Makes an input field or button for routine
  629.                              MULTINPT
  630.  
  631.             MULTINPT ------- Places input fields on the screen as
  632.                              defined by a previous calls to SETINPT and
  633.                              MAKEFIELD.
  634.  
  635.             UPDATEFIELD ---- Updates a field in a multi-field input screen.
  636.  
  637.             CHOICEWIND%  --- Makes a text window with one to ten user
  638.                              choices.  Returns the selected choice.
  639.  
  640.             CHOICEBAR%   --- Presents the user with 1 to 10 choices.
  641.                              Returns the selected choice.
  642.  
  643.             GETANS --------- Makes a get answer window or single line
  644.                              prompt.  Waits for a single key response.
  645.  
  646.             INFOLINE ------- Sets coordinates and color for the info-line.
  647.                              Also turns on the info-line.  Saves the area
  648.                              of the display reserved by the info-line. The
  649.                              info-line displays a prompt or message.
  650.  
  651.             PRINTINFO ------ Prints a prompt or message in the info-line.
  652.  
  653.  
  654.  
  655.  
  656.                                        6
  657.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.             INFOFIXED ------ Defines a fixed string for the info-line. The
  669.                              string is printed every time PRINTINFO is
  670.                              called.  The string specified in PRINTINFO is
  671.                              added to the string defined in this routine.
  672.                              Useful for scroll and pulldown windows.
  673.  
  674.             RSTRINFO ------- Restores the display area under, and option-
  675.                              ally turns off the info-line.
  676.             DOSOUND -------- Produces sound determined by SETWIND.
  677.  
  678.             GETDISK% ------- Returns the default disk drive.
  679.  
  680.             SETDISK -------- Sets the default disk drive.
  681.  
  682.             FINDPATH$ ------ Returns the default path for any drive
  683.                              ( current directory ).
  684.             DISKSIZE ------- Returns disk size and free space.
  685.  
  686.             FINDDIR -------- Returns the directory of any drive or path
  687.                              in a string array.
  688.  
  689.             EXEPATH$ ------- Returns the path of the active executable
  690.                              program.
  691.  
  692.             GETAKEY% ------- Returns a code for a key pressed or
  693.                              zero if no key is pressed.
  694.  
  695.             MOUSEON% -------- Turns the mouse on or off.
  696.  
  697.             MOUSESHOW ------ Displays the mouse cursor.
  698.  
  699.             MOUSEHIDE ------ Hides the mouse cursor.
  700.  
  701.             MOUSEROW% ------ Returns the row position of the mouse
  702.                              cursor.
  703.  
  704.             MOUSECOL% ------ Returns the column position of the mouse
  705.                              cursor.
  706.  
  707.             MOUSEPOS ------- Positions the mouse cursor at any screen
  708.                              location.
  709.  
  710.             MOUSELIMIT ----- Limits mouse movement to a defined area
  711.                              of the display.
  712.  
  713.             LBUTTON% ------- Returns the left mouse button status.
  714.  
  715.             RBUTTON% ------- Returns the right mouse button status.
  716.  
  717.             MOUSEINWIND% --- Returns a value signifying if the mouse
  718.                              cursor is in a specified window.
  719.  
  720.  
  721.  
  722.                                        7
  723.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.             MOUSEINMULT% --- Returns the field number the mouse cursor
  735.                              occupies for a specified multi-field
  736.                              input screen.
  737.  
  738.             DISPLAYROW% ---- Returns the number of display rows for
  739.                              the active screen.
  740.  
  741.             PEEKASM& ------- Returns a 1,2,3 or 4 byte value for a
  742.                              specified memory location.
  743.  
  744.  
  745.             GETCUR& --------- Returns the cursor position and size in a
  746.                               long integer.
  747.  
  748.             SETCUR  --------- Restores the cursor position and size.
  749.  
  750.             CUROFF ---------- Turns the system cursor off.
  751.  
  752.             WTIMER& --------- Returns the systems 1/18th second counter
  753.                               value.
  754.  
  755.             WVAL& ----------- Returns the value of a numeric string.
  756.  
  757.             TWOPOWEROF& ----- Returns the value of 2, raised to a
  758.                               specified power.
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.                                        8
  789.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.             --------------------------------------------------------
  800.  
  801.                   ***  SYSTEM AND PROGRAMMING REQUIREMENTS ***
  802.  
  803.             COMPUTER:
  804.                IBM PC (XT or AT) or compatible computer.  One disk drive.
  805.  
  806.             VIDEO ADAPTOR CARD:
  807.                MONO, CGA, EGA or VGA emulating CGA.
  808.  
  809.             PROGRAMMING LANGUAGE:
  810.                For the QuickBASIC. version;
  811.  
  812.                    QuickBASIC version 4.5.
  813.                     - Text mode --  80 by 25, 80 by 43, or 80 by 50
  814.  
  815.                For the BASIC 7.1 (PDS) version;
  816.  
  817.                    BASIC 7.1.
  818.                    - Text mode --  80 by 25, 80 by 43, or 80 by 50
  819.  
  820.                    - Requires use of "far strings". This is the default
  821.                      if executable programs are produced from within
  822.                      QBX.  If modules are compiled using BC on the command
  823.                      line ( outside of the QBX environment ) the /Fs option
  824.                      must be used.
  825.  
  826.                For the VISUAL BASIC FOR DOS version;
  827.  
  828.                    Visual BASIC 1.00
  829.                    - Text mode --  80 by 25, 80 by 43, or 80 by 50
  830.  
  831.             DOS: Version 2.1 or higher.
  832.  
  833.             -------------------------------------------------------
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.                                        9
  855.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.                                GETTING STARTED
  866.  
  867.  
  868.          Before using the routines included in WINDOW R-E-Z, it is
  869.          necessary to set several global values.  The following routines
  870.          set these values.  These routines must be called at the start
  871.          of any program.
  872.  
  873.  
  874.          ROUTINE            USED TO...
  875.  
  876.          SETWIND            1. Set the default sound for all routines
  877.                             2. Set the shadow color for all windows.
  878.                             3. Set "slow print" for CGA adaptors.
  879.                             4. Determine how certain hi-intensity
  880.                                characters are displayed.
  881.                             3. Set the color of button brackets ( < > ).
  882.  
  883.                             SETWIND MUST BE CALLED BEFORE USING ANY OF
  884.                             THE ROUTINES INCLUDED WITH WINDOW R-E-Z.
  885.  
  886.  
  887.          INPTINIT           1. Set the date format for input routines.
  888.                             2. Set the comma designator for input
  889.                                routines.
  890.                             3. Set the cursor "start position" for input
  891.                                routines.
  892.                             4. Determine if the first valid key pressed
  893.                                erases an input field.
  894.                             5. Determine if an invalid key produces a
  895.                                sound while entering data in an input
  896.                                field.
  897.  
  898.                             INPTINIT MUST BE CALL PRIOR TO CALLING
  899.                             ROUTINES MULTINPT, INPTWIND, OR SCRLWIND,
  900.                             CHOICEWIND, OR CHOICEBAR.
  901.  
  902.  
  903.          MOUSEON            1. Initializes the mouse and optionally
  904.                                turns the mouse "ON".
  905.  
  906.                            MOUSEON MUST BE CALLED TO USE THE MOUSE
  907.  
  908.  
  909.          SEE THE DETAILED DESCRIPTIONS FOR THE INDIVIDUAL ROUTINES.
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.                                        10
  921.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.                              USING WINDOWS R-E-Z
  932.  
  933.          THE ACTIVE WINDOW
  934.  
  935.          When a window is defined ( made ) the number assigned to it
  936.          by the programmer represents the area covered by the window.
  937.          The area is restored or deleted via it's "number".  Up to 20
  938.          window areas can be saved.  The memory used to save the
  939.          window areas is automatically managed by WINDOWS R-E-Z.
  940.  
  941.          Any time a window is made it becomes the "active" window. The
  942.          active window is used by the following routines.
  943.  
  944.               PRINTW --- Prints text in the active window.
  945.               LINEW ---- Prints a line in the active window.
  946.               BOXW ----- Prints a box in the active window.
  947.               SCRLWIND - Places a scrollable list in the active
  948.                          window.
  949.               CLRWIND -- Clears all text from the interior of the
  950.                          active window.
  951.               RESAVE  -- Saves the active window and any text in the
  952.                          active window.
  953.               NEWCOLOR - Changes the "print-to" color of the active
  954.                          window.
  955.  
  956.          NOTE: ACTIVE INPUT AND PULLDOWN WINDOWS MAY ALSO EXIST. THESE
  957.          WINDOWS ARE NOT RELATED TO THE ACTIVE WINDOW GENERATED BY THE
  958.          WINDOWING ROUTINES.
  959.  
  960.  
  961.          1.00 SETWIND ( FST%, SND%, SHAD%, NOHI%, BRACKETATTR% )
  962.  
  963.               Description:   SETWIND must be called at least once in
  964.               any program using the routines in WINDOWS-R-E-Z, prior
  965.               to calling the routines.  This procedure initializes
  966.               window memory.  It also sets the default windowing
  967.               speed, sound, window shadow color, and "button" bracket
  968.               color.
  969.  
  970.               The first call to SETWIND initializes window memory and
  971.               sets the default parameters.  Subsequent calls to
  972.               SETWIND will not affect window memory but can be used
  973.               to change the default parameters.
  974.  
  975.               NOTE: IF A CLEAR STATEMENT IS EXECUTED BY THE PROGRAM
  976.               ALL WINDOW MEMORY IS LOST.  WINDOW AREAS SAVED IN WINDOW
  977.               MEMORY ARE LOST.  SETWIND MUST BE CALLED AGAIN TO RE-
  978.               INITIALIZE WINDOW MEMORY AFTER EXECUTING A CLEAR STATEMENT.
  979.  
  980.               Arguments:      FST% is used to allow "fast" windowing
  981.               if a CGA video card, or emulation, is detected.  If
  982.               FST% = 0  window routines will be slower on computers
  983.  
  984.  
  985.  
  986.                                        11
  987.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.               with CGA.  If FST%  = 1 window routines will be "fast" on
  998.               computers with CGA.  This may, however, cause "snow" with
  999.               certain CGA cards.  If a monochrome, EGA, or VGA card is
  1000.               detected, FST% is ignored.  All windowing is "fast".
  1001.  
  1002.                                SND% determines which sound will be
  1003.               generated by the routines.   If SND% = 1 a "CLICK" sound
  1004.               will be generated.  If SND% = 2 a "BEEP" sound will be
  1005.               produced.  Any other value produces no sound.
  1006.  
  1007.                                SHAD% sets the color for window shad-
  1008.               ows.  See the color attribute chart for details.  Set-
  1009.               ting SHAD% to 7 works well for monochrome displays while
  1010.               setting SHAD% to 8 works well for color displays.
  1011.  
  1012.                                NOHI% determines how pulldown and scroll
  1013.               window routines display "key" characters.  It also
  1014.               determines how the button brackets ( < > ) for the active
  1015.               choice for routines SCRLWIND, INPTWIND, CHOICEBAR, and
  1016.               CHOICEWIND are displayed.  In addition, if a field defined
  1017.               in routine MAKEFIELD is use to make a "button field" the
  1018.               color of characters used as brackets ( when the field is
  1019.               active via routine MULTINPT ) is affected by the value of
  1020.               NOHI%  If NOHI% = 0 key characters or brackets are
  1021.               displayed in their specified color.  If NOHI% = 1 "key"
  1022.               characters and brackets are displayed in reverse video.
  1023.               This is appropriate for LCD displays which can not display
  1024.               high intensity characters.  NOHI% affects "key" characters
  1025.               and "active brackets" ONLY if they have been defined to
  1026.               have a different color then normal characters and inactive
  1027.               brackets.
  1028.  
  1029.                                BRACKETATTR% determines the foreground
  1030.               color of button brackets ( < > ) for active choices or
  1031.               fields in routines SCRLWIND, INPTWIND, CHOICEWIND,
  1032.               CHOICEBAR, and MULTINPT.  It only affects the brackets for
  1033.               the active choice.  BRACKETATTR% may be set from 0 to 15.
  1034.               For most applications BRACKETATTR% can be set to 15 with
  1035.               good results.  If BRACKETATTR% is set to zero the bracket
  1036.               color for the active choice does not change.  The brackets
  1037.               retain their in-active color.
  1038.  
  1039.  
  1040.          1.01 MAKEWIND (W%, LABEL$, TR%, LC%, WIDE%, NR%, ATTR%, BORBER%)
  1041.  
  1042.               Description:   Makes a window.  May also save a window-
  1043.               ed area to window memory.  The window becomes the active
  1044.               window.   Calls to PRINTW, LINEW, SCRLWIND, CLRWIND, BOXW,
  1045.               RESAVE, and NEWCOLOR refer to the active window. If an
  1046.               attempt is made to place a window on the display and it
  1047.               will not fit on the display an error will be reported. The
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                                        12
  1053.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.               maximum size of a window is dependent on the screen mode
  1064.               when a window is made.
  1065.  
  1066.               NOTE: TEXT MODES 80x25, 80x43 AND 80x50 ARE SUPPORTED.
  1067.  
  1068.  
  1069.               Arguments:   W% is the window number and must equal 0 to
  1070.               20.  If W% = 0 the area under the window is not saved.
  1071.               A window is simply made.  If W% is from 1 to 20 the area
  1072.               under the window is saved and may be restored at a later
  1073.               time via a call to RSTRWIND.  If W% is the number of a
  1074.               window area previously saved by MAKEWIND or SAVEWIND an
  1075.               error is reported.
  1076.  
  1077.               NOTE: WHEN WINDOW NUMBER 1 TO 20 IS MADE AN IMAGE OF THE
  1078.               DISPLAY AREA UNDER THE WINDOW IS SAVED IN WINDOW MEMORY.
  1079.               THIS AREA MAY BE RESTORED TO THE DISPLAY BY CALLING
  1080.               ROUTINE RSTRWIND.  ROUTINE RSTRWIND MAY OPTIONALLY REMOVE
  1081.               THE "SAVED" DISPLAY AREA FROM WINDOW MEMORY.
  1082.                     A SECOND ROUTINE, DELWIND, MAY BE USED TO REMOVE
  1083.               THE "SAVED" DISPLAY AREA FROM WINDOW MEMORY.  THIS
  1084.               ROUTINE DOES NOT, HOWEVER, RESTORE THE "SAVED" DISPLAY
  1085.               AREA TO THE SCREEN.  DO NOT CONFUSE THESE ROUTINES!!
  1086.               SEE THE DESCRIPTIONS FOR ROUTINES RSTRWIND AND DELWIND
  1087.               FOR DETAILS.
  1088.  
  1089.                            LABEL$ is the text printed on the top
  1090.               border or in the title box (see BORDER%) of the window.
  1091.               By default the print starts on the second column.  If
  1092.               the first character of LABEL$ ="@" the text will be
  1093.               centered.  If LABEL$ is too long it will be truncated to
  1094.               fit on the top border or in the title box.
  1095.  
  1096.                            TR% is the top row of the window.  If TR% =
  1097.               100 the window will be centered from top to bottom.
  1098.  
  1099.                            LC% is the left column position of the win-
  1100.               dow. If LC% = 100 the window will be centered from left
  1101.               to right.
  1102.  
  1103.                            WIDE% is the window's width.  WIDE% must be
  1104.               greater than 2.  WIDE% + LC% -1 must not be greater than
  1105.               80. ( The displays width ).
  1106.  
  1107.                            NR% is the number of rows in the window and
  1108.               must be greater than 2.  NR% + TR% must not be greater
  1109.               than the display rows + 1 .  If NR% is less than 5 a window
  1110.               title box is not permitted.
  1111.  
  1112.                            ATTR% is the window's color and may be in
  1113.               the range of 0 to 255.  The foreground ( window's label
  1114.               and border ) color equals ATTR% MOD 16.  The background
  1115.  
  1116.  
  1117.  
  1118.                                        13
  1119.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.               color equals INT( ATTR% / 16 ). If the background color
  1130.               is greater than 7 the foreground flashes and the back-
  1131.               ground color equals background color - 8. If the fore-
  1132.               ground and background colors are the same the border and
  1133.               label will not be visible. ( SEE THE COLOR ATTRIBUTE
  1134.               CHART.)  ATTR% becomes the print-to color for window W%.
  1135.  
  1136.                            BORDER% sets the window's border and shadow
  1137.               and can be up to 3 digits in length.
  1138.  
  1139.                            DIGIT    =    #3  #2  #1
  1140.                            Example   =    1   1   1   ( 111 )
  1141.  
  1142.                            Digit #1 sets the border.
  1143.  
  1144.                            0 = No border
  1145.                            1 = Single line border
  1146.                            2 = Double line border
  1147.  
  1148.                            Digit #2 sets the shadow.
  1149.  
  1150.                            0 = No shadow
  1151.                            1 = Right/Bottom shadow
  1152.                            2 = Left/Bottom shadow
  1153.                            3 = Left/Top shadow
  1154.                            4 = Right/top Shadow
  1155.  
  1156.                            Digit #3 set the title box.
  1157.  
  1158.                            0 = No title box
  1159.                            1 = title box
  1160.  
  1161.               The example (111) has a 1 for each digit.  The window
  1162.               will have a single lined border, a shadow on the right
  1163.               and bottom and a title box
  1164.  
  1165.               NOTE:  IF BORDER% IS 100 OR GREATER AND THE NUMBER OF
  1166.               ROWS (NR%) IS LESS THAN 5 TITLE BOXES ARE NOT PERMITTED.
  1167.               SEE THE BORDER DESIGNATION CHART IN THE APPENDIX FOR
  1168.               FURTHER DETAILS.
  1169.  
  1170.          1.02 CHNGWIND (W%)
  1171.  
  1172.               Description:  Makes window, W%, the active window.
  1173.               W% must represent a window area in window memory.
  1174.  
  1175.               Argument:   W% is the window number.  It must range from
  1176.               0 to 20.  If W% does not represent a window saved by a
  1177.               previous call to MAKEWIND, CHNGWIND reports an error.
  1178.  
  1179.               NOTE:  W% CAN NOT REPRESENT A WINDOW SAVED BY "SAVEWIND".
  1180.               IT MUST REPRESENT A WINDOW SAVED BY "MAKEWIND".
  1181.  
  1182.  
  1183.  
  1184.                                        14
  1185.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.          1.03 PRINTW (TEXT$, R%, LC%)
  1196.  
  1197.               Description:   Prints text to the active window.  Care
  1198.               must be used to assure the active window is visible
  1199.               as PRINTW will print predicated on the coordinates of
  1200.               the active window regardless of it's visibility.  It is
  1201.               advisable, therefore, to print to a window immediately
  1202.               after it is made the active window. The text's color
  1203.               will be the print-to color of the active window.  If
  1204.               no window is active when PRINTW is called an error will
  1205.               be reported.
  1206.  
  1207.               Arguments:   TEXT$ is the text to be printed.
  1208.  
  1209.                            R% is the row in the window were the text
  1210.               will print .  If R%=1 the text will print in the first
  1211.               row below the border or title box. PRINTW may be used to
  1212.               print a label in the bottom border of the window by
  1213.               setting R% to the number or rows in the active window
  1214.               minus 1 ( minus 3 if a title box was specified ).  An
  1215.               invalid value for R% will result in a reported error.
  1216.  
  1217.                            LC% is the left column where TEXT$ starts
  1218.               printing.  If LC%=100 the text will be centered left to
  1219.               right.  IF LC% plus the length of TEXT$ is greater than
  1220.               the windows width minus 2 an error will be reported.
  1221.  
  1222.  
  1223.          1.04 PRINTWHOT ( TEXT$, R%, LC%, HOTCHARPOS%, HOTATTR% )
  1224.  
  1225.               Description:   Prints text to the active window.  Prints
  1226.               one character ( the "hot character" ) in a different
  1227.               color.  Care must be used to assure the active window is
  1228.               visible as PRINTWHOT will print predicated on the
  1229.               coordinates of the active window regardless of it's
  1230.               visibility.  It is advisable therefore, to print to a
  1231.               window immediately after it is made the active window.
  1232.               The text's color ( excluding the "hot character" ) will be
  1233.               the print-to color of the active window.  If no window is
  1234.               active when PRINTWHOT is called an error will be reported.
  1235.  
  1236.               Arguments:     TEXT$ is the text to be printed.  R% is the
  1237.               row in the window were the text will print .  If R%=1 the
  1238.               text will print in the first row below the border or title
  1239.               box. PRINTW may be used to print a label in the bottom
  1240.               border of the window by setting R% to the number or rows
  1241.               in the active window minus 1 ( minus 3 if a title box was
  1242.               specified ).  An invalid value for R% will result in a
  1243.               reported error.
  1244.  
  1245.                               LC% is the left column where TEXT$ starts
  1246.               printing.  If LC%=100 the text will be centered left to
  1247.  
  1248.  
  1249.  
  1250.                                        15
  1251.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.               right.  IF LC% plus the length of TEXT$ is greater than
  1262.               the windows width minus 2 an error will be reported.
  1263.  
  1264.                              HOTCHARPOS% is the position in TEXT$ of the
  1265.               "hot character".
  1266.  
  1267.                              HOTATTR% is the color or the "hot
  1268.               character".  ( SEE THE COLOR ATTRIBUTE CHART IN THE
  1269.               APPENDIX. )
  1270.  
  1271.  
  1272.          1.05 SAVEWIND (W%, TR%, LC%, WIDE%, NR%)
  1273.  
  1274.               Description:   Saves a portion of the screen in window
  1275.               memory.  This procedure is the same as MAKEWIND except
  1276.               no window is made.  The area designated by the arguments
  1277.               is saved.  If the number assigned to W% represents a
  1278.               window area previously saved by MAKEWIND or SAVEWIND an
  1279.               error is reported.  An area saved via SAVEWIND can be
  1280.               "popped" to the screen at appropriate times during
  1281.               program execution by RSTRWIND ( see description ). A
  1282.               screen area saved by SAVEWIND DOES NOT BECOME THE
  1283.               ACTIVE WINDOW.  SAVEWIND differs from RESAVE in that it
  1284.               saves an area of the screen specified by it's
  1285.               arguments. RESAVE saves the area of the screen as
  1286.               designated by the coordinates of the active window.
  1287.  
  1288.  
  1289.               Arguments:  W% must range from 1 to 20.
  1290.  
  1291.                           See MAKEWIND for a description of the
  1292.               remaining arguments.
  1293.  
  1294.  
  1295.  
  1296.          1.06 RESAVE
  1297.  
  1298.               Description:   Saves the active window, it's interior,
  1299.               and shadow.  As window number 0 can not be saved the
  1300.               active window can not be window number 0.  If there is
  1301.               no active window or window number 0 is active when
  1302.               RESAVE is called an error will be reported.
  1303.  
  1304.               The screen area saved under the active window is removed
  1305.               from window memory and replaced with the active window
  1306.               and it's interior.   After complex screens are made in
  1307.               the active window's interior, RESAVE can be used to save
  1308.               them.   They can be restored to the screen using
  1309.               RSTRWIND.  Use RESAVE immediately after a window is made
  1310.               and it's interior is filled as  RESAVE will save the
  1311.               area of the screen determined by the active window's
  1312.               coordinates, even if it is not visible.
  1313.  
  1314.  
  1315.  
  1316.                                        16
  1317.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.               Use RESAVE as follows;
  1328.  
  1329.               1. Make a window number 1 to 20 via a call to MAKEWIND.
  1330.                  This becomes the active window.
  1331.  
  1332.               2. Print in the window using PRINTW, LINEW, or BOXW.
  1333.  
  1334.               3. Call CHNGWIND to make the window number used in step
  1335.                  1 the active window.  ( Only required if additional
  1336.                  windows were made inside the original window. )
  1337.  
  1338.               4. Call RESAVE to save active window.
  1339.  
  1340.               5. Use RSTRWIND to "pop" the window and it's interior on
  1341.                  the screen any time during program execution.
  1342.  
  1343.               6. After the window is restored to the screen it may be
  1344.                  printed in again provided it is the active window.
  1345.                  This may require a call to CHNGWIND.
  1346.  
  1347.               Arguments:   None.
  1348.  
  1349.  
  1350.          1.07 RSTRWIND (W%, DELFLAG%)
  1351.  
  1352.               Description:   Restores a window are  previously saved
  1353.               by MAKEWIND, SAVEWIND or RESAVE.  The window area (W%)
  1354.               must exist in window memory or RSTRWIND does nothing.
  1355.  
  1356.               NOTE: WHEN A WINDOW IS RESTORED IT IS THE PROGRAMMER'S
  1357.               RESPONSIBILITY TO ASSURE THE SCREEN MODE IS THE SAME AS
  1358.               IT WAS WHEN IT WAS MADE.  IF A WINDOW IS MADE IN THE 43
  1359.               ROW SCREEN MODE IT MUST BE RESTORED IN SAME.
  1360.  
  1361.               Arguments:     W% is the number ( 1 to 20 ) assigned to
  1362.               the saved window area to be restored to the screen.  The
  1363.               window area is returned to it's original coordinates.
  1364.  
  1365.                              DELFLAG% is set to zero  to keep the
  1366.               windowed area in window memory.  If the DELFLAG% is not
  1367.               zero the saved window area (W%) is deleted from window
  1368.               memory. If W% was the active window an active window
  1369.               will no longer exist.
  1370.  
  1371.  
  1372.          1.08 DELWIND (W%)
  1373.  
  1374.               Description:   Deletes a saved window area (W%) from
  1375.               window memory, if it exists in window memory.  If the
  1376.               window is the active window an active window will no
  1377.               longer exist.
  1378.  
  1379.  
  1380.  
  1381.  
  1382.                                        17
  1383.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.               NOTE: DELWIND DOES NOT RESTORE THE "SAVED" WINDOW AREA
  1394.               TO THE DISPLAY.  IT ONLY REMOVES THE "SAVED" WINDOW AREA
  1395.               FROM WINDOW MEMORY.  ROUTINE RSTRWIND MUST BE USED TO
  1396.               RESTORE THE "SAVED" WINDOW AREA TO THE DISPLAY.
  1397.  
  1398.               Argument:      W% is the window area number.
  1399.  
  1400.  
  1401.          1.09 CLRWIND
  1402.  
  1403.               Description:   Clears the interior of the active window.
  1404.               Care must be taken to assure that active window is
  1405.               visible as CLRWIND clears the area of the screen
  1406.               designated as the interior of the active window regard-
  1407.               less of the window's visibility.  The window will be
  1408.               cleared with it's print-to color.  If no window is
  1409.               active when CLRWIND is called, an error is reported.
  1410.  
  1411.               Arguments:     None
  1412.  
  1413.  
  1414.          1.10 NEWCOLOR ( ATTR% )
  1415.  
  1416.               Description:   Changes the print-to color of the active
  1417.               window.  Text printed in the window by PRINTW, lines
  1418.               printed in the window by LINEW, and boxes printed by BOXW
  1419.               will assume the new color specified by this routine.  If
  1420.               the active window is cleared via a call to CLRWIND, it's
  1421.               interior will be cleared with the color specified by
  1422.               NEWCOLOR.  The color designation will be retained and used
  1423.               by subsequent calls to PRINTW or LINEW for the window
  1424.               which was active when NEWCOLOR was called. If no window is
  1425.               active when NEWCOLOR is called, an error is reported.
  1426.  
  1427.               Argument:      ATTR% is the new color attribute.  SEE
  1428.               THE COLOR ATTRIBUTE CHART IN THE APPENDIX.
  1429.  
  1430.          1.11 LINEW ( ROW%, TYP% )
  1431.  
  1432.               Description:   Prints, or erases a line in the active
  1433.               window.  If an active window does not exist an error is
  1434.               reported. The line will assume the print-to color of the
  1435.               active window.  As the border characters are changed
  1436.               when a line is printed, the color of the border
  1437.               characters may change also.  This will occur if the
  1438.               print-to color is not the same as the color of the
  1439.               border characters in the active window.
  1440.  
  1441.               Arguments:     ROW% is the row, of the interior, of the
  1442.               active window where a line will print.  If ROW% < 1 or
  1443.               ROW% greater then the number of rows in the interior of
  1444.               the active window an error will be reported.
  1445.  
  1446.  
  1447.  
  1448.                                        18
  1449.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.                              TYP% is the type of line which will print
  1460.               and may be as follows;
  1461.  
  1462.                       TYP%               Line type
  1463.  
  1464.                         1                Single line
  1465.                         2                Double line
  1466.                         0                Erases a line and returns
  1467.                                          normal border characters.
  1468.                         Other values     Defaults to single line.
  1469.  
  1470.  
  1471.               NOTE: IF TYP% = 0 ANY TEXT ON LINE ( ROW% ) IN THE WINDOW
  1472.                     WILL BE ERASED.
  1473.  
  1474.  
  1475.          1.12 BOXW ( TR%, LC%, WD%, NR%, BORDER% )
  1476.  
  1477.               Description: Draws a box in the active window.  The box is
  1478.               drawn in the "print-to" color.  If an attempt is make to
  1479.               make a box that will not fit entirely within the active
  1480.               window an error will be reported.  An active window must
  1481.               exist or an error will be reported.
  1482.  
  1483.               Arguments:   TR% is the top row of the box relative to the
  1484.               active window's top interior row.
  1485.  
  1486.                            LC% is the left column position of the box
  1487.               relative to the active window's left border.
  1488.  
  1489.                            WD% specifies the boxes width.
  1490.                            NR% specifies the number of rows for the box.
  1491.  
  1492.                            BORDER% sets the boxes border and may be set
  1493.               as follows.
  1494.  
  1495.                            BORDER%  Border
  1496.  
  1497.                            0        no border - may be used to erase an
  1498.                                     existing box.
  1499.                            1        single line border.
  1500.                            2        double line border.
  1501.  
  1502.                            Other values default to BORDER% = 1.
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.                                        19
  1515.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.          1.13 WAVAIL% ( WINDNUM% )
  1526.  
  1527.               Description: WAVAIL% is a function.  It determines if a
  1528.               window is available.  A window is available if it has
  1529.               never been used or if it has been used and subsequently
  1530.               deleted by routines RSTRWIND or DELWIND.  AS WAVAIL% IS A
  1531.               FUNCTION IT IS IMPERATIVE IT IS DECLARED IN ANY MODULE
  1532.               USING IT.  WAVAIL% equals 1 if a window is available.
  1533.               WAVAIL% equals 0 if a window is not available.
  1534.  
  1535.               Argument:    WINDNUM% is the window number.  It may range
  1536.               from 1 to 25.  Windows 1 to 20 are used in the window
  1537.               management system.  Window 22 is used for the get answer
  1538.               window in routine GETANS.  The following applies to
  1539.               windows 21, 23, 24, AND 25.
  1540.  
  1541.               WINDOW#  WAVAIL%   MEANING
  1542.                        =
  1543.               21       0         There is an active input window. It
  1544.                                  may be deleted by routine RSTRINPT. A
  1545.                                  call to INPTWIND re-enters the active
  1546.                                  input window.
  1547.               21       1         There is no active input window.
  1548.                                  Calling INPTWIND will make a new active
  1549.                                  input window.
  1550.  
  1551.               23       0         There is an active pulldown window. It
  1552.                                  may be deleted by routine RSTRPULL.  A
  1553.                                  call to PULLDOWN re-enters the active
  1554.                                  pulldown window.
  1555.               23       1         There is no active pulldown window.
  1556.                                  Calling PULLDOWN will place the user at
  1557.                                  the first selection of the pulldown
  1558.                                  menubar.
  1559.  
  1560.               24       0         There is an active pulldown menubar. It
  1561.                                  may be deleted by routine RSTRPULL.  A
  1562.                                  call to pulldown will not save the
  1563.                                  display area occupied by the menubar.
  1564.  
  1565.               24       1         There is no active pulldown menubar.
  1566.                                  Calling PULLDOWN will make an active
  1567.                                  menubar and save the display area
  1568.                                  occupied by same.
  1569.  
  1570.               25       0         There is an active info-line.  It may
  1571.                                  be deleted by routine RSTRINFO. Calls
  1572.                                  to PRINTINFO will print in the info-
  1573.                                  line.
  1574.               25       1         There is no active info-line.  Calling
  1575.                                  INFOLINE will make an active info-line
  1576.  
  1577.  
  1578.  
  1579.  
  1580.                                        20
  1581.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.          1.14 WINDSTATUS
  1592.  
  1593.               Description:   This is a programming tool.  Calling
  1594.               WINDSTATUS reports window 0 to 20's. number, top row,
  1595.               left column, width, number of rows, and attribute (color).
  1596.               The attribute refers to the original attribute specified
  1597.               by the call to MAKEWIND for each window.  If the
  1598.               attribute is "SAVED" the window area was saved by a call
  1599.               to SAVEWIND, not MAKEWIND.  WINDSTATUS also reports the
  1600.               active window and total window memory used to save
  1601.               window areas.   Window number zero does not use window
  1602.               memory as the area under it is not saved.  To use
  1603.               WINDSTATUS place a call to WINDSTATUS in the program at
  1604.               the location where it is desirable to view each windows
  1605.               parameters.  The program will terminate and must be
  1606.               restarted.  First remove the call to WINDSTATUS.
  1607.  
  1608.               NOTE: IF A WINDOW HAS A SHADOW IT'S WIDTH IS INCREASED
  1609.                     BY TWO AND IT'S LENGTH IS INCREASED BY ONE.
  1610.  
  1611.               Arguments:   None.
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.                                        21
  1647.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.                         ***** PULLDOWN WINDOWS *****
  1658.  
  1659.          These procedures generate a maximum of 10 pulldown windows.
  1660.          The area covered by the pulldown windows is saved and restored as
  1661.          the window moves from one menubar item to the next.  To select a
  1662.          menubar item the ARROW keys or MOUSE may be used.  The first
  1663.          letter of the menubar item may also be pressed.  To select an
  1664.          item from any of the pulldown windows the ARROW keys, MOUSE, or
  1665.          "KEY CHARACTER" for the item may be pressed.  If the ARROW keys
  1666.          are used the ENTER or RETURN key must be pressed to finalize the
  1667.          selection.  If a letter is pressed, and it is found, the
  1668.          procedure is automatically exited without the need to press the
  1669.          ENTER or RETURN keys.  The ESC and FUNCTION keys may optionally
  1670.          exit.
  1671.  
  1672.  
  1673.          2.00 SETPULL ( TR%, LC% , WD%, PWIND$() )
  1674.  
  1675.               Description: Must be called to set up the routine
  1676.               PULLDOWN.  Must be called prior to calling routines
  1677.               PRINTMENUBAR, PULLDOWN or CHNGPULL.
  1678.  
  1679.               Arguments:   TR% is the top row position of the menubar.
  1680.               If the top row position of the menubar is set too low not
  1681.               allowing a pulldown window to fit on the display an error
  1682.               will be reported ( WINDOW WON'T FIT or SHADOW WON'T FIT )
  1683.               when the pulldown window is accessed.
  1684.  
  1685.                            LC% is the left column position of the
  1686.               menubar.  It must range from 1 to 73.  If the left column
  1687.               position of the menubar is set too high not allowing a
  1688.               pulldown window to fit on the display an error will be
  1689.               reported ( WINDOW WON'T FIT or SHADOW WON'T FIT ) when
  1690.               the pulldown window is accessed.
  1691.  
  1692.                            WD% is the width of the menubar.  WD% is
  1693.               self adjusting if it is set outside of the permissible
  1694.               range.  The maximum width of the menubar is 81 - LC%.
  1695.               The minimum width of the menubar equals the width of the
  1696.               individuals items in the menubar plus two spaces between
  1697.               each item plus two preceding spaces and one trailing
  1698.               space.  If WD% is set too low it self adjusts to the
  1699.               minimum width.  If it is set too high it self adjusts to
  1700.               the maximum width.  WD% only changes the length, by
  1701.               adding trailing spaces to the menubar, if it is greater
  1702.               then the minimum width and less then or equal to the
  1703.               maximum width of the menubar.
  1704.  
  1705.                             PWIND$() is an array containing strings
  1706.               representing menubar selections, the data for the info-
  1707.               line for the menubar selections, and the individual
  1708.               pulldown window selections.  PWIND$() must be in the
  1709.  
  1710.  
  1711.  
  1712.                                        22
  1713.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.               correct format.  The last selection in each pulldown
  1724.               window must be followed by a "***" in PWIND$().
  1725.               "ENDPULL" in PWIND$() marks the end of all pulldown
  1726.               windows.  PWIND$(1) must be the first string in the
  1727.               array, NOT PWIND$(0).  The following represents an
  1728.               example of the required format for PWIND$() for a
  1729.               pulldown window ( the first pulldown window ).
  1730.  
  1731.               EXAMPLE:
  1732.  
  1733.               PWIND$(1) = "File"               ' Menubar selection for
  1734.               ( SEE BELOW )                    ' pulldown window one.
  1735.  
  1736.               PWIND$(2) = "File operations"    ' This will print in
  1737.               NOTE: MUST = "" IF INFO-LINE     ' the info-line for
  1738.               IS NOT USED.                     ' menubar selection 1
  1739.               PWIND$(3) = "Save"               ' Selections for the
  1740.               PWIND$(4) = "Get"                ' pulldown window.
  1741.               PWIND$(5) = "Delete"
  1742.  
  1743.               PWIND$(6) = "***"                ' End of pulldown
  1744.                                                ' window.
  1745.  
  1746.               PWIND(7) = ........              ' Start over for next
  1747.                                                ' pulldown window.
  1748.  
  1749.               PWIND(?? - 1) = "***"            ' End of last pulldown
  1750.                                                ' window.
  1751.  
  1752.               PWIND(??) = "ENDPULL"            ' End of all pulldown
  1753.                                                  data.
  1754.  
  1755.               In the above example PWIND$(1) holds the menubar selection
  1756.               for the first pulldown window.  The menubar defaults to
  1757.               two spaces between selections. If PWIND$(1) = "File  " two
  1758.               additions spaces will be inserted between "File" and the
  1759.               next menubar selection.  Only trailing spaces are
  1760.               considered.  Leading spaces are removed.  PWIND$(2) holds
  1761.               the data for the info-line ( SEE ROUTINE INFOLINE ) for
  1762.               the first menubar selection, "File".  For every menubar
  1763.               selection in PWIND$() the following element of PWIND$()
  1764.               MUST contain info-line data.  If an info-line is not used
  1765.               set the appropriate elements of PWIND$ to equal "".
  1766.               Pulldown window selections follow the info-line data in
  1767.               PWIND$(). Each element of PWIND$() which represents a
  1768.               pulldown window selection has a "KEY CHARACTER".  The key
  1769.               character is the character which is searched for when a
  1770.               key is pressed while in the PULLDOWN window environment.
  1771.               The key character defaults to the first character in each
  1772.               item.  To designate the key character as a different
  1773.               character follow the character with a "@".  THIS IS ONLY
  1774.               APPLICABLE TO THE PULLDOWN WINDOW SELECTIONS.  THE
  1775.  
  1776.  
  1777.  
  1778.                                        23
  1779.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.               PULLDOWN MENUBAR SELECTIONS ALWAYS DEFAULT TO THE FIRST
  1790.               CHARACTER.  IF A "@" IS PLACED IN A MENUBAR STRING IT WILL
  1791.               PRINT AS PART OF THE MENUBAR.
  1792.  
  1793.               EXAMPLES:
  1794.               PWIND$(3) = "Get File"        ( Key character = "G")
  1795.               PWIND$(4) = "Save F@ile"      ( Key character = "F")
  1796.  
  1797.               The "@" will not be displayed when the string is printed
  1798.               in the pulldown window.  The description for KEYATTR%
  1799.               for the routine PULLDOWN describes how to make the key
  1800.               character a different color, or high intensity, enabling
  1801.               users to distinguish it as the key character.
  1802.  
  1803.               NOTE: DO NOT PLACE THE "@" IN POSITION ONE OR TWO OF THE
  1804.               STRING AS IT WILL PRINT IN THE PULLDOWN WINDOW.  AS
  1805.               STATED THE KEY CHARACTER WILL DEFAULT TO POSITION ONE IF
  1806.               THE "@" IS OMITTED FROM THE STRING.  THIS ELIMINATES THE
  1807.               NEED TO PLACE THE "@" IN POSITION TWO.
  1808.  
  1809.               If an element of PWIND$() = "-" and it is not the first
  1810.               or last item in a pulldown window it will segment the
  1811.               pulldown window by placing a line across the width of it.
  1812.               If the "-" is the first or last item in the pulldown
  1813.               window it will print as a "-".
  1814.  
  1815.               EXAMPLE:  PWIND$(4) = "-"   Providing PWIND$(4) is not
  1816.                         last item in the pulldown window PWIND$(4) will
  1817.                         print as a line across the window.
  1818.  
  1819.               --------------------------------------------------------
  1820.               EXAMPLE: SETPULL
  1821.  
  1822.               N%=30                           ' USE THIS METHOD SO
  1823.               DIM PWIND$(N%)                  ' PWIND$() IS DYNAMIC.
  1824.                                               ' DON'T USE DIM PWIND$(30).
  1825.               TEMP%=0
  1826.               WHILE PWIND$(TEMP%) <> "ENDPULL"
  1827.                  TEMP% = TEMP% + 1            ' TEMP% MUST START WITH 1.
  1828.                  READ PWIND$(TEMP%)           ' READ PULLDOWN WINDOW DATA.
  1829.               WEND
  1830.               TR%=1: LC%=1: WD%=80            ' MENUBAR'S LOCATION/WIDTH.
  1831.  
  1832.               CALL SETPULL ( TR%, LC%, WD%, PWIND$() )  'SET PULLDOWN
  1833.               ERASE PWIND$                    ' COMPLETELY ERASES PWIND$()
  1834.                                               ' IF IT IS DYNAMIC.
  1835.               DATA THIS                  :' MENUBAR SELECTION FOR PULL-
  1836.                                          :'  DOWN WINDOW #1.
  1837.               DATA Sample window 1       :' INFO-LINE FOR MENUBAR
  1838.                                          :' SELECTION FOR WINDOW 1.
  1839.               DATA HELLO, JOE,***        :' WINDOW #1 SELECTIONS
  1840.               DATA IS                    :' MENUBAR SELECTION - WINDOW 2.
  1841.  
  1842.  
  1843.  
  1844.                                        24
  1845.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.               DATA Sample window 2       :' INFO-LINE FOR MENUBAR SELECTION.
  1856.               DATA HOW, ARE, -, YOU,***  :' WINDOW #2 SELECTIONS.
  1857.                                          :' LINE PRINTED IN ROW 3
  1858.  
  1859.               DATA A                     :' MENUBAR SELECTION - WINDOW 3.
  1860.               DATA Sample window 3       :' INFO-LINE FOR MENUBAR SELECTION.
  1861.               DATA I,AM@,FINE,***        :' WINDOW 3 SELECTIONS.  "AM" HAS
  1862.                                          :' A KEY CHARACTER OF "M".
  1863.  
  1864.               DATA SAMPLE                :' MENUBAR SELECTION - WINDOW 4.
  1865.               DATA Sample window 4       :' INFO-LINE FOR MENUBAR SELECTION.
  1866.               DATA BYE,***               :' WINDOW 4 SELECTION - ONE ITEM.
  1867.  
  1868.  
  1869.               DATA ENDPULL               :' END OF DATA ( CASE SENSITIVE )
  1870.               --------------------------------------------------------
  1871.               Array PWIND$() is dimensioned to hold the pulldown menubar,
  1872.               info-line, and window data.  This is only a temporary array
  1873.               to hold the data and is erased after SETPULL is called.
  1874.               The data is then read.  The "***" signals the end of each
  1875.               pulldown window and MUST be entered exactly as shown. The
  1876.               "ENDPULL" signals the end for all pulldown windows and MUST
  1877.               be the last data item read.  If the format is not exactly
  1878.               as shown an error will be reported or the windows will not
  1879.               be as expected.  In the example shown the first menubar
  1880.               item is "THIS".  It's associated pulldown window contains
  1881.               the two items "HELLO" and "JOE".  When "THIS" is selected
  1882.               the info-line, if it is on, will display "Sample window 1".
  1883.               The last menubar item is "SAMPLE" and it's pulldown window
  1884.               contains one item "BYE".  When "SAMPLE" is selected the
  1885.               info-line will display "Sample window 3".  The menubar is
  1886.               located on line 1, column 1 ( TR%=1 and LC% = 1 ). It
  1887.               occupies the entire row as WD% = 80.
  1888.  
  1889.               NOTE: THE DATA MUST BE IN THE FORMAT SHOWN.  THE CHAR-
  1890.               ACTERS "***" MARK THE END OF EACH INDIVIDUAL WINDOW AND
  1891.               THE WORD "ENDPULL" MARKS THE END OF ALL PULLDOWN WINDOWS.
  1892.  
  1893.  
  1894.          2.01 PRINTMENUBAR (ATTR%)
  1895.  
  1896.               NOTE 1: ROUTINE "SETPULL" MUST BE CALLED ONCE PRIOR TO
  1897.               CALLING THIS ROUTINE.
  1898.  
  1899.               NOTE 2: ROUTINE "RSTRPULL" IS USED TO RESTORE THE DISPLAY
  1900.               AREA UNDER THE MENUBAR. ( *** SEE RSTRPULL *** )
  1901.  
  1902.  
  1903.               Description: Prints the pulldown menubar at the location
  1904.               specified by a previous call to SETPULL.  Saves the
  1905.               display under the menubar if the menubar is not active.
  1906.               The menubar is not active if it has not been printed or it
  1907.  
  1908.  
  1909.  
  1910.                                        25
  1911.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.               has been printed and has been restored ( de-activated ) by
  1922.               a call to RSTRPULL.
  1923.  
  1924.               Use this routine to print the menubar previous to a call
  1925.               to PULLDOWN if the "ALT key" method is used to enter
  1926.               routine PULLDOWN.
  1927.  
  1928.               NOTE: THIS ROUTINE IS NOT REQUIRE IF THE "ALT KEY" ENTRY
  1929.               METHOD OF ENTERING PULLDOWN IS NOT USED.  ROUTINE PULLDOWN
  1930.               WILL PRINT THE MENUBAR IF IT DOES NOT EXIST.
  1931.  
  1932.               Argument:    ATTR% is the menubar's color.  It must be set
  1933.               to the same color as used in the subsequent call to
  1934.               PULLDOWN.  ( SEE PULLDOWN'S ARGUMENT ATTR% )
  1935.  
  1936.          2.02 PULLDOWN (INFO$(),BAR%,WIND%,EX$,RKEY%,ATTR%,KEYATTR%,BRDR%)
  1937.  
  1938.               NOTE 1: ROUTINE "SETPULL" MUST BE CALLED ONCE PRIOR TO
  1939.               CALLING THIS ROUTINE.
  1940.  
  1941.               NOTE 2: ROUTINE "RSTRPULL" MUST BE CALLED AFTER THIS
  1942.               ROUTINE IS EXITED TO DEACTIVATE THE ACTIVE PULLDOWN WINDOW
  1943.               AND RESTORE THE DISPLAY AREAS UNDER THE ACTIVE PULLDOWN
  1944.               WINDOW AND MENUBAR.  IF "RSTRPULL" IS NOT CALLED THE
  1945.               ACTIVE PULLDOWN WINDOW AND MENUBAR REMAIN ACTIVE.
  1946.               ( *** SEE RSTRPULL *** )
  1947.  
  1948.               NOTE 3: THERE ARE THREE MODES OF ENTRY TO ROUTINE PULLDOWN
  1949.  
  1950.                       1. USING THE ALT KEY.  IF ARGUMENT BAR% = 0 ON
  1951.                          ENTRY, AND AN ACTIVE PULLDOWN WINDOW DOES NOT
  1952.                          EXIST, THIS METHOD IS USED.  A DO/LOOP OR AN
  1953.                          ALTERNATE CONDITIONAL LOOP STATEMENT MUST
  1954.                          SURROUND THE CALL TO PULLDOWN IF THIS METHOD IS
  1955.                          USED. SEE ARGUMENT BAR%
  1956.  
  1957.                       2. DIRECT ENTRY ON FIRST MENUBAR SELECTION. IF
  1958.                          BAR% > 0 AND AN ACTIVE PULLDOWN WINDOW DOES NOT
  1959.                          EXIST, THIS METHOD IS USED.  SEE ARGUMENT BAR%
  1960.  
  1961.                       3. RE-ENTRY ON THE ACTIVE PULLDOWN MENUBAR
  1962.                          SELECTION AND ON THE ACTIVE SELECTION IN THE
  1963.                          ACTIVE PULLDOWN WINDOW.  THIS METHOD IS USED IF
  1964.                          AN ACTIVE PULLDOWN WINDOW EXISTS.  THIS METHOD
  1965.                          IS USED REGARDLESS OF THE VALUE OF ARGUMENT
  1966.                          BAR% AND OVERRIDES THE PREVIOUS TWO MODES OF
  1967.                          ENTRY TO PULLDOWN.  SEE ROUTINE RSTRPULL AND
  1968.                          THE FOLLOWING DESCRIPTION.
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.                                        26
  1977.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.               Description: Places the user in the pulldown window
  1988.               environment.  On entering PULLDOWN, the following occurs.
  1989.  
  1990.               1. IF AN ACTIVE PULLDOWN WINDOW DOES NOT EXIST the scroll
  1991.                  bar will be positioned over first selection in the
  1992.                  pulldown menubar or the ALT key must be used to remain
  1993.                  in the pulldown environment.  SEE ARGUMENT BAR%
  1994.  
  1995.               2. IF AN ACTIVE PULLDOWN WINDOW EXISTS the scroll bar will
  1996.                  be positioned over the active pulldown selection in the
  1997.                  active pulldown window ( SEE RSTRPULL ).  This may be
  1998.                  appropriate if a selection from a pulldown window is
  1999.                  used to present the user with selections from another
  2000.                  scroll window external to PULLDOWN.  If the user
  2001.                  presses ESC to exit the external scroll window PULLDOWN
  2002.                  may be re-entered exactly where it was exited.  IN THIS
  2003.                  CASE THE ACTIVE PULLDOWN WINDOW MUST BE INTACT.  IT
  2004.                  WILL NOT BE COMPLETELY RE-PRINTED. If the user makes a
  2005.                  selection from the external scroll window, the routine
  2006.                  RSTRPULL may be used to restore the area under the
  2007.                  pulldown window and deactivate the active pulldown
  2008.                  window. The next call to PULLDOWN displays the pulldown
  2009.                  menubar with the scroll bar positioned over the first
  2010.                  item.
  2011.  
  2012.               IF AN ACTIVE PULLDOWN WINDOW UNKNOWINGLY EXISTS ON ENTRY
  2013.               TO PULLDOWN THE ACTIVE PULLDOWN WINDOW, IF NOT DISPLAYED,
  2014.               WILL HAVE IT'S INTERIOR PARTIALLY REPRINTED.  THE ENTIRE
  2015.               PULLDOWN WINDOW WILL NOT BE RE-PRINTED.
  2016.  
  2017.               Arguments:   INFO$() is a string array holding the data
  2018.               for the info-line ( SEE ROUTINE INFOLINE ) for each
  2019.               pulldown windows's selections.  Do not confuse this with
  2020.               the info-line data which is associated with the menubar
  2021.               selections as defined in routine SETPULL.  The info-line
  2022.               provides instructions or descriptions for the selections
  2023.               in the pulldown windows.  If pulldown window one holds
  2024.               five selections, INFO$(1) holds the data for the first
  2025.               selection in the window.  INFO$(2) is the data for the
  2026.               second selection.  Corresponding elements of INFO$() and
  2027.               the pulldown window's selections are related.  A
  2028.               SEGMENTING LINE IN A PULLDOWN WINDOW MUST BE REPRESENTED
  2029.               BY A "" IN INFO$().  If pulldown window one contains
  2030.               five selections and pulldown window two contains ten
  2031.               selections, INFO$(6) will hold the data for the info-
  2032.               line for the first selection in the pulldown window two
  2033.               while INFO$(15) will hold the data for the info-line for
  2034.               the last selection.  The elements of INFO$() will only
  2035.               be displayed in the info-line if it is "turned on" via
  2036.               routine INFOLINE.  IF AN INFO-LINE IS NOT USED INFO$()
  2037.               MUST STILL BE A PREVIOUSLY DIMENSION ARRAY.  DIMENSION
  2038.               INFO$() TO ZERO BEFORE CALLING PULLDOWN.
  2039.  
  2040.  
  2041.  
  2042.                                        27
  2043.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.               EXAMPLE: DIM INFO$(0)       'IF INFO-LINE IS NOT USED
  2055.  
  2056.               Using the example for the pulldown windows defined in
  2057.               the call to SETPULL ( SEE - EXAMPLE: SETPULL ) the
  2058.               following could apply to INFO$()
  2059.  
  2060.               EXAMPLE: DIM INFO$(10)      ' DO NOT ERASE THIS ARRAY!!!
  2061.  
  2062.                   INFO$()                 ' RELATED PULLDOWN SELECTION
  2063.                   ----------------------------------------------------
  2064.  
  2065.                   INFO$(1) = "ONE"        ' WINDOW 1 SELECTION "HELLO"
  2066.                   INFO$(2) = "TWO"        ' WINDOW 1 SELECTION "JOE"
  2067.  
  2068.                   INFO$(3) = "THREE"      ' WINDOW 2 SELECTION "HOW"
  2069.                   INFO$(4) = "FOUR"       ' WINDOW 2 SELECTION "ARE"
  2070.                   INFO$(5) = ""           ' WINDOW 2 -- LINE
  2071.                   INFO$(6) = "FIVE"       ' WINDOW 2 SELECTION "YOU"
  2072.                   INFO$(7) = "SIX"        ' WINDOW 3 SELECTION "I"
  2073.                   INFO$(8) = "SEVEN"      ' WINDOW 3 SELECTION "AM"
  2074.                   INFO$(9) = "EIGHT"      ' WINDOW 3 SELECTION "FINE"
  2075.  
  2076.                   INFO$(10) = "NINE"      ' WINDOW 4 SELECTION "BYE"
  2077.  
  2078.                   The numbers ONE, TWO, THREE .... will print in the
  2079.                   info-line when the corresponding pulldown window
  2080.                   selection is covered by the scroll bar.
  2081.  
  2082.  
  2083.  
  2084.  
  2085.                            BAR% is the sequential number, (left to
  2086.               right), on exit, of selected menubar item.   On entry
  2087.               BAR% determines the mode of entry to routine PULLDOWN.
  2088.  
  2089.               On entry if BAR% > 0 and an active pulldown window does
  2090.               not exist PULLDOWN is entered with the first menubar
  2091.               selection highlighted.  The user is in the PULLDOWN
  2092.               environment.  PULLDOWN may be exited by making a pulldown
  2093.               window selection, by press a valid "exit key", or
  2094.               optionally with the mouse if previously specified. SEE
  2095.               ARGUMENT EXIT$.
  2096.  
  2097.               On entry if BAR% = 0 and an active pulldown window does
  2098.               not exist, PULLDOWN IS IMMEDIATELY EXITED IF THE ALT KEY
  2099.               IS NOT PRESSED.  ARGUMENT RKEY% WILL EQUAL ZERO ON EXIT
  2100.               ( RKEY% = 0 ) UNDER THIS CIRCUMSTANCE.  This allows the
  2101.               user to use the conventional ALT key method to enter
  2102.               PULLDOWN.
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.                                        28
  2109.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.               EXAMPLE: ( An active pulldown window does not exist )
  2120.  
  2121.               BAR% = 0    ' PULLDOWN "LOOKS" FOR THE ALT KEY.
  2122.               DO
  2123.  
  2124.                CALL PULLDOWN (INFO$(),BAR%,WIND%,EX$,RKEY%,ATTR%,
  2125.                                KEYATTR%, BRDR%)
  2126.  
  2127.                'THE ABOVE MUST BE ON ONE LINE IN QB/QBX/VBDOS EDITOR.
  2128.  
  2129.               LOOP WHILE RKEY% = 0  ' The ALT key was not pressed
  2130.  
  2131.               On exit, BAR% represents the menubar selection.  If the
  2132.               second item in the menubar is selected, BAR% will equal
  2133.               two.  If ESC is pressed and ESC is an exit key BAR% will
  2134.               equal 0 on exit.  If a function key is pressed and it is
  2135.               an exit key, BAR% will equal the highlighted menubar
  2136.               selection on exit.
  2137.  
  2138.                            WIND% represents the row number of the
  2139.               selected pulldown window item.  It is returned by the
  2140.               calling procedure.  If the ESC pressed and ESC is an exit
  2141.               key, WIND% will equal 0 on exit.  If a function key is
  2142.               pressed and it is an exit key, WIND% will equal the
  2143.               highlighted pulldown window selection ( interior row
  2144.               number ) on exit.
  2145.  
  2146.               NOTE:  A SEGMENTING LINE IN A PULLDOWN WINDOW OCCUPIES A
  2147.               ROW POSITION.
  2148.  
  2149.                            EX$ sets the keys when pressed, or exit
  2150.               circumstance, which will cause PULLDOWN to be exited.
  2151.               The ENTER ( RETURN ) key always exits if a pulldown window
  2152.               selection is highlighted.
  2153.  
  2154.               EX$ can be used to simulate a selection from a pulldown
  2155.               window. ( SEE DESCRIPTION FOR ARGUMENT RKEY% ).  EX$ may
  2156.               be any combination of the following.
  2157.  
  2158.                     "0"             The F10 key will exit.
  2159.                     "1" to "9"      The F1 to F9 key will exit.
  2160.                     "E"             The ESC key will exit.
  2161.                     "O"             The MOUSE, if pressed outside of the
  2162.                                     active pulldown window, and not on
  2163.                                     the menubar will exit.
  2164.  
  2165.               EXAMPLE: EX$ = "E24"  The ESC, F2, F4 and ENTER keys exit.
  2166.  
  2167.                            RKEY% returns a numeric representation for
  2168.               the key which was pressed , or exit circumstance, which
  2169.               caused PULLDOWN to be exited.  On exit RKEY% may equal the
  2170.               following.
  2171.  
  2172.  
  2173.  
  2174.                                        29
  2175.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.                     0               The ALT key method was used to enter
  2186.                                     PULLDOWN and the ALT key was not
  2187.                                     pressed. SEE ARGUMENT BAR%.
  2188.                     1 to 10         The F1 to F10 key caused the exit.
  2189.                     13              The ENTER key caused the exit.
  2190.                     27              The ESC key caused the exit.
  2191.                     200             The MOUSE was pressed outside of the
  2192.                                     menubar or pulldown window causing
  2193.                                     the exit.
  2194.  
  2195.               Arguments EX$ and RKEY% to may be used to simulate a
  2196.               selection from a pulldown window.  To use the F1 key to
  2197.               simulate the first selection from the second pulldown
  2198.               window, argument EX$ must contain a "1" on entering
  2199.               PULLDOWN.  Check to see if the F1 key caused the exit
  2200.               ( RKEY% = 1 ) from PULLDOWN.   If it did set BAR% to 2
  2201.               simulating the second pulldown window.  Set WIND% to 1 to
  2202.               simulate the first selection from the second pulldown
  2203.               window.
  2204.  
  2205.               NOTE: IF ROUTINE CHNGPULL IS USED TO DISABLE A PULLDOWN
  2206.               WINDOW'S SELECTION AND THE SELECTION MAY ALSO BE SIMULATED
  2207.               BY AN EXIT KEY, ARGUMENT EX$ MUST BE ADJUSTED ACCORDINGLY
  2208.               TO PREVENT THE EXIT KEY FROM SIMULATING THE DISABLED
  2209.               SELECTION.
  2210.  
  2211.                            ATTR% is the color.  It follows the same
  2212.               rules as described in MAKEWIND except a flashing
  2213.               foreground is not permitted. Any value over 127 is
  2214.               changed to ATTR% MOD 128.
  2215.  
  2216.                            KEYATTR% is the color of the key character
  2217.               for selections in the pulldown windows.  If KEYATTR% = 0
  2218.               the key character will be the same color as the other
  2219.               characters in each window selections.  This would be
  2220.               appropriate if the first character in each selection is
  2221.               ALWAYS the key character. Setting KEYATTR% to a different
  2222.               color, or high intensity, allows users to distinguish the
  2223.               character as the key character for each item in the list.
  2224.               Any value for KEYATTR% over 127 is changed to KEYATTR%
  2225.               MOD 128.
  2226.  
  2227.                            BRDR% is the pulldown window's border
  2228.               designation.  BRDR% can equal 0, 1, 2, 10, 11 or 12 for
  2229.               pulldown windows.  Any other value for BRDR% will
  2230.               result in an error.  SEE THE BORDER DESIGNATION CHART.
  2231.  
  2232.  
  2233.          2.03 RSTRPULL ( RSTRMENUBAR% )
  2234.  
  2235.               Description: Restores the display area under and
  2236.               deactivates the active pulldown window.  The active
  2237.  
  2238.  
  2239.  
  2240.                                        30
  2241.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.               pulldown window is the displayed pulldown window when
  2252.               routine PULLDOWN is exited.  Normally a call to RSTRPULL
  2253.               will be made when PULLDOWN is exited.  There may be times,
  2254.               however, when it is desirable to leave the active pulldown
  2255.               window and menubar displayed.  If this is the case
  2256.               RSTRPULL should not be called after PULLDOWN is exited.
  2257.  
  2258.               If RSTRPULL is NOT called after PULLDOWN is exited the
  2259.               following will occur:
  2260.  
  2261.               1. The pulldown window which was active when PULLDOWN
  2262.                  was exited will remain displayed.
  2263.  
  2264.               2. The pulldown window which was active when PULLDOWN was
  2265.                  exited remains the active pulldown window. The next
  2266.                  call to PULLDOWN will return to the active pulldown
  2267.                  window with the previous ( active ) selection from the
  2268.                  pulldown window covered by the scroll bar.
  2269.  
  2270.                  NOTE: WHEN PULLDOWN IS RE-ENTERED UNDER THESE THE
  2271.                  ROUTINE, PULLDOWN, EXPECTS THE ACTIVE PULLDOWN WINDOW
  2272.                  AND MENUBAR TO BE INTACT.  IF IT IS NOT, THE PULLDOWN
  2273.                  WINDOW WILL NOT BE DISPLAYED AS EXPECTED.  IT IS
  2274.                  IMPORTANT THAT NO PORTION OF ACTIVE PULLDOWN WINDOW OR
  2275.                  MENUBAR IS "PRINTED OVER" PRIOR TO RE-ENTERING
  2276.                  PULLDOWN.
  2277.  
  2278.               Argument:    RSTRMENUBAR% determines if the area under the
  2279.               menubar is restored to the display when RSTRPULL is
  2280.               called.  If RSTRMENUBAR% = 0 the menubar will remain
  2281.               displayed after RSTRPULL is called and the menubar will
  2282.               remain active.  Subsequent calls to PULLDOWN DO NOT save
  2283.               the area under the menubar.  PULLDOWN expects the menubar
  2284.               to be intact.  If RSTRMENUBAR% = 1 the area under the
  2285.               menubar is restored to the display and the menubar is
  2286.               deactivated.  Subsequent calls to PULLDOWN save the area
  2287.               under, and display a new  menubar.  By virtue of a call to
  2288.               RSTRPULL the area under the active pulldown window is
  2289.               restored and the active pulldown window is deactivated.
  2290.               The status of argument RSTRMENUMAR% has no affect on the
  2291.               status of the active pulldown window.  It only restores
  2292.               and deactivates the menubar or allows same to remain
  2293.               active.  In either case the next call to PULLDOWN will
  2294.               position the scroll bar over the first selection of the
  2295.               menubar after a call to RSTRPULL.
  2296.               NOTE: THE SAVED DISPLAY AREA FOR THE ACTIVE PULLDOWN
  2297.               WINDOW RESIDES IN WINDOW NUMBER 23.  FUNCTION WAVAIL% CAN
  2298.               DETERMINE IF A PULLDOWN WINDOW IS ACTIVE.
  2299.  
  2300.               EXAMPLE: IF WVAIL%(23) = 0 ' A pulldown window is active.
  2301.                        IF WVAIL%(23) = 1 ' A pulldown window is not
  2302.                                          '  active.
  2303.  
  2304.  
  2305.  
  2306.                                        31
  2307.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.               THE SAVED DISPLAY AREA FOR THEN MENUBAR RESIDES IN WINDOW
  2319.               NUMBER 24.  FUNCTION WVAIL% CAN DETERMINE IF THE MENUBAR
  2320.               IS ACTIVE.
  2321.  
  2322.               EXAMPLE: IF WAVAIL%(24) = 0 ' The menubar is active.
  2323.                        IF WAVAIL%(24) = 1 ' the menubar is not active.
  2324.  
  2325.  
  2326.          2.04 CHNGPULL ( BARITEM%, WINDITEM%, ATTR% )
  2327.  
  2328.               NOTE: ROUTINE SETPULL MUST BE CALLED ONCE IN EVERY PROGRAM
  2329.               BEFORE ANY CALLS TO THIS ROUTINE.
  2330.  
  2331.               Description:  Disables or enables the ability to select
  2332.               an selection or all selections, and changes the selection's
  2333.               color, in a pulldown window.
  2334.  
  2335.               Arguments:   BARITEM% is the sequential number ( left
  2336.               to right ) of the menubar selection associated with the
  2337.               item's pulldown window.
  2338.  
  2339.                            WINDITEM% is the row position of the item
  2340.               in the pulldown window's interior. If WINDITEM% = -1
  2341.               all selections in the pulldown window are affected.
  2342.  
  2343.               NOTE:  A LINE IN A PULLDOWN WINDOW OCCUPIES A ROW
  2344.               POSITION.
  2345.  
  2346.                            ATTR% serves two purposes.
  2347.  
  2348.               If ATTR% > 0 it changes the color of the item
  2349.               specified by BARITEM% and WINDITEM% to ATTR% ( SEE THE
  2350.               COLOR ATTRIBUTE CHART ). The key character in the item
  2351.               also assumes the color specified by ATTR%.  The ability
  2352.               to select the item from the pulldown window is disabled.
  2353.               Any value for ATTR% over 127 is changed to ATTR% MOD 128.
  2354.               If ATTR% = 0 the color of the item, and it's key char-
  2355.               acter is returned to it's original status as defined in
  2356.               the original call to PULLDOWN.  The ability to select
  2357.               the item is enabled.
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.                                        32
  2373.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.                          ***** SCROLL WINDOWS *****
  2384.  
  2385.          SCRLWIND places a scrollable list in the active window.  A
  2386.          highlight ( scroll ) bar is placed over a specified item in
  2387.          the list and can be moved by the user via the UP and DOWN
  2388.          ARROW keys or MOUSE.  Pressing the ENTER key or MOUSE on a
  2389.          selection returns the sequential item number covered by the
  2390.          scroll bar.  The HOME, END, PG UP, and PG DN keys move the
  2391.          scroll bar as indicated.  When a key is pressed SCRLWIND checks
  2392.          to see if the key matches the KEY CHARACTER of any selection in
  2393.          the list.  If a match is found the scroll bar moves to that
  2394.          position in the list.
  2395.  
  2396.          Based on the number of buttons ( SEE ARGUMENT BUT% ), the
  2397.          minimum size of the window used for the scroll window varies as
  2398.          follows;
  2399.                                             ( OK )  ( OK and CANCEL )
  2400.          # BUTTONS                    0         1       2
  2401.  
  2402.          MIN. WINDOW WIDTH            5        11      18
  2403.          MIN. ROWS WITH TITLEBOX      5         9       9
  2404.          MIN. ROWS WITHOUT TITLEBOX   3         7       7
  2405.  
  2406.          The size of the scrollable rows is reduced by four and the size
  2407.          of the scrollable width is reduced by six if buttons are used.
  2408.          The scrollable width must be consider if a STRING WON'T FIT
  2409.          error is encountered.
  2410.  
  2411.          3.00 SCRLWIND (LIST$(), INFO$(), TL$, ENTRIES%, KIND$, RTRN%,
  2412.                         LI%, FC%  RKEY%, KEYATTR%, SCROLLBAR%, BUT%)
  2413.  
  2414.               NOTE1: THE ABOVE MUST BE ON ONE LINE IN THE QB/QBX/VBDOS
  2415.               ENVIRONMENT.
  2416.  
  2417.               NOTE2: FOR ADVANCED FEATURES SEE ROUTINE B4SCRL.  THESE
  2418.               FEATURES INCLUDE THE ABILITY TO;
  2419.  
  2420.                   1. EXIT THIS ROUTINE USING DEFINABLE "EXIT KEYS".
  2421.                   2. SET MARKED ( TAGGED ) SELECTIONS ON ENTRY.
  2422.                   3. CHANGE THE COLOR OF THE "TAG" DESIGNATOR.
  2423.                   4. SUPPRESS REFRESHING OF THE SCROLL WINDOW
  2424.                      ON ENTRY TO THIS ROUTINE.
  2425.  
  2426.               Description: Places a list ( LIST$() ) in the active
  2427.               window.  The list is ENTRIES% long.  There are two classes
  2428.               of scroll windows.
  2429.  
  2430.               1. Non-virtual scroll windows.  If argument KEYATTR% does
  2431.                  not equal zero the scroll window is a non-virtual
  2432.                  scroll window.  On entry, SCRLWIND, verifies each
  2433.                  element of LIST$() will fit in the scroll window with a
  2434.                  leading and trailing space added to the string.  If any
  2435.  
  2436.  
  2437.  
  2438.                                        33
  2439.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.                  item will not fit an error is reported.  Non-virtual
  2450.                  scroll windows may be ( SEE ARGUMENT KIND$ ) regular,
  2451.                  auto-exit, multiple mark, single mark, or list scroll
  2452.                  windows.
  2453.  
  2454.               2. Virtual scroll windows.  If argument KEYATTR% equals
  2455.                  zero, the scroll window is a virtual scroll window.
  2456.                  Virtual scroll windows allow horizontal and vertical
  2457.                  scrolling.  The LEFT ARROW and RIGHT ARROW key become
  2458.                  active.  A differently colored "key character" is not
  2459.                  permitted in a virtual scroll window as the character
  2460.                  would not be visible when it is scrolled out if the
  2461.                  window.  No checks are made to verify the string length
  2462.                  in a virtual scroll window.  Virtual scroll windows may
  2463.                  be ( SEE ARGUMENT KIND$ ) regular, auto-exit, multiple
  2464.                  mark, single mark, or list scroll windows.  If argument
  2465.                  KEYATTR% equals zero and all elements of the list will
  2466.                  fit in the window's width the scroll window assumes the
  2467.                  properties of a non-virtual scroll window making the
  2468.                  RIGHT ARROW and LEFT ARROW keys inactive.
  2469.  
  2470.               NOTE: ARGUMENT KEYATTR% DETERMINES IF A SCROLL WINDOW IS
  2471.               A VIRTUAL OR NON-VIRTUAL SCROLL WINDOW. SEE THE
  2472.               DESCRIPTION FOR KEYATTR% FOR MORE INFORMATION.
  2473.  
  2474.               Arguments:   LIST$() is the array holding the strings to
  2475.               be placed in the scroll window.  Each element of the
  2476.               array is a line in the scroll window.  If the length of
  2477.               any element is greater then the width of the window - 4
  2478.               and the scroll window is a non-virtual scroll window
  2479.               ( KEYATTR% <> 0 ) an error is reported. LIST$(1) must be
  2480.               the first string in the array, NOT LIST$(0).
  2481.  
  2482.               Each selectable item in LIST$() has a "KEY CHARACTER".
  2483.               The key character is the character which is searched for
  2484.               when a key is pressed while in the SCRLWIND environment.
  2485.               The key character defaults to the first character in
  2486.               each item.  To designate the key character as a
  2487.               different character follow the character with a "@" in
  2488.               the string.
  2489.  
  2490.               EXAMPLE: LIST$(1) = "Get File"  ( Key character = "G")
  2491.                        LIST$(2) = "Save F@ile"( Key character = "F") 3
  2492.  
  2493.               The "@" will not be displayed when the string is printed
  2494.               in the scroll window.  The description for KEYATTR% for
  2495.               this routine describes how to make the key character a
  2496.               different color, or high intensity, enabling users to
  2497.               distinguish it as the key character.
  2498.  
  2499.               NOTE1: DO NOT PLACE THE "@" IN POSITION ONE OR TWO OF THE
  2500.               STRING AS IT WILL PRINT IN THE SCROLL WINDOW.  AS STATED
  2501.  
  2502.  
  2503.  
  2504.                                        34
  2505.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.               THE KEY CHARACTER WILL DEFAULT TO POSITION ONE IF THE
  2516.               "@" IS OMITTED FROM THE STRING.  THIS ELIMINATES THE
  2517.               NEED TO PLACE THE "@" IN POSITION ONE OR TWO.
  2518.  
  2519.               NOTE2: IF ROUTINE B4SCRL IS USED TO SET A SCROLL WINDOW'S
  2520.               EXIT CRITERIA, AND ROUTINE B4SCRL'S ARGUMENT, EXIT$,
  2521.               CONTAINS AN "X" THE "KEY CHARACTER" SEARCH FEATURE IS
  2522.               DISABLED.  DO NOT USE KEY CHARACTERS IF THIS IS THE CASE.
  2523.               ( SEE ROUTINE B4SCRL )
  2524.  
  2525.               If an element of LIST$() = "-" and it is not the first
  2526.               item in the list or the last item in the list and all of
  2527.               the items in LIST$() will fit in the window's interior
  2528.               the scroll window will be segmented.  A line will print
  2529.               across the window as determined by the position of the
  2530.               "-" in LIST$().  If the previous conditions are not met
  2531.               the string will print as a "-".
  2532.  
  2533.               EXAMPLE:  LIST$(2) = "-". Provided LIST$(2) is not the last
  2534.               item in the list and the number of interior rows in the
  2535.               window is greater thantwo, LIST$(2) will print as a line.
  2536.  
  2537.                            INFO$() is an array holding the individual
  2538.               strings used for the information line for each entry in
  2539.               the scroll window ( SEE ROUTINE INFO-LINE ).  As the
  2540.               scroll bar moves from entry to entry the message in the
  2541.               info-line changes based on the element of INFO$() which
  2542.               corresponds to the selected entry in the scroll window.
  2543.               If the scroll bar is over the third entry in the scroll
  2544.               window INFO$(3) will print in the info-line, provided the
  2545.               info-line is on.  A SEGMENTING LINE IN THE SCROLL WINDOW
  2546.               MUST BE REPRESENTED BY AN ELEMENT IN INFO$().  IF A
  2547.               SEGMENTING LINE OCCUPIES THE FOURTH ROW OF THE SCROLL
  2548.               WINDOW INFO$(4) MUST EQUAL "".  If the info-line is not
  2549.               going to be used or if a fixed info-line message is to be
  2550.               printed for all entries in the scroll window INFO$() must
  2551.               still be a dimensioned array prior to calling SCRLWIND.
  2552.               FOR NO INFO-LINE OR A FIXED INFO-LINE MESSAGE INFO$() MUST
  2553.               BE DIMENSIONED TO ZERO ( EX: DIM INFO$(0) ).
  2554.  
  2555.                            TL$ is a string which will print in the title
  2556.               box of the scroll window.  TL$ is ignored if the scroll
  2557.               window does not have a title box.  TL$ is useful for
  2558.               virtual scroll windows.  When a virtual scroll window
  2559.               scrolls up and down, TL$ does not move.  When a virtual
  2560.               scroll window scrolls left and right TL$ scrolls with the
  2561.               window's interior.  TL$ can, therefore, be longer than the
  2562.               window's width when used with a virtual scroll window.
  2563.               Although TL$ may be used in other ( non-virtual ) scroll
  2564.               windows, the title for the scroll window can be generated
  2565.               in the call to MAKEWIND for the scroll window.
  2566.  
  2567.  
  2568.  
  2569.  
  2570.                                        35
  2571.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.                            ENTRIES% is the number of elements in the
  2582.               array ( LIST$() ) to use in the scroll window.
  2583.  
  2584.                            KIND$ specifies the type of scroll window
  2585.               and may be any of the following.
  2586.  
  2587.               KIND$        DESCRIPTION ( Detail descriptions follow )
  2588.  
  2589.               "A" "AN"     Auto-exit scroll window.
  2590.               "M" "MN"     Multiple mark ( tag ) scroll window.
  2591.               "S"          Single mark ( tag ) scroll window.
  2592.               "L"          List scroll window.  No scroll bar.
  2593.               "V", "SV"    View scroll window/ Single mark view.
  2594.               "N"          Regular - scroll bar erased on exit.
  2595.  
  2596.               Any other value for KIND$ generates a regular scroll
  2597.               window.
  2598.  
  2599.               AUTO-EXIT SCROLL WINDOW ( KIND$ = "A" ) --  When in the
  2600.               scroll window environment if a key pressed matches the key
  2601.               character of an item in the scroll window the routine will
  2602.               be exited.  The scroll bar moves to the item found. The
  2603.               position of the selected item in LIST$() will be returned
  2604.               in RTRN%.  If RTRN% = 2, LIST$(2) was selected.  SCRLWIND
  2605.               will exit with RKEY% equal to 13 simulating exit via the
  2606.               ENTER (RETURN) key.
  2607.  
  2608.               NOTE: IF ROUTINE B4SCRL IS USED TO SET A SCROLL WINDOW'S
  2609.               EXIT CRITERIA AND ROUTINE B4SCRL'S ARGUMENT EXIT$ CONTAINS
  2610.               AN "X" THE "AUTO-EXIT" IS DISABLED. ( SEE ROUTINE B4SCRL )
  2611.  
  2612.               MULTIPLE MARK SCROLL WINDOW ( KIND$ = "M" )  -- Pressing
  2613.               the <+> or INSERT key marks the item covered by the scroll
  2614.               bar.  A right arrow to the left of the item in the scroll
  2615.               window signifies it has been marked. The color of this
  2616.               arrow may be changed by routine B4SCRL.  Pressing the <->
  2617.               or DELETE key un-marks an item if it was marked.  Striking
  2618.               the PRINT ( not all systems ) key or SPACE BAR marks all
  2619.               items, unless they were all previously marked, in which
  2620.               case the PRINT ( not all systems ) key or SPACE BAR will
  2621.               un-mark all items.  Pressing the ENTER or RETURN key
  2622.               returns a coded string in KIND$ which represents the
  2623.               marked items.  If KIND$ ="" no items were marked.  If any
  2624.               items were marked KIND$ will be ENTRIES% long.  Each
  2625.               character in KIND$ will correspond to an element in
  2626.               LIST$().  If the first character of KIND$=" " LIST$(1) was
  2627.               not marked. If the second character, in KIND$ = CHR$(16),
  2628.               LIST$(2) was marked.  Each un-marked element of LIST$()
  2629.               will have a corresponding space (" ") in KIND$ while each
  2630.               marked element will have a corresponding right arrow
  2631.               ( CHR$(16) ) in KIND$.  See the description for function
  2632.               MARKED% for a method of decoding KIND$.  The multiple mark
  2633.  
  2634.  
  2635.  
  2636.                                        36
  2637.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.               feature is disabled if a scroll window is also defined as
  2648.               a list scroll window or a single mark scroll window.
  2649.  
  2650.               NOTE: THE USE OF ROUTINE B4SCRL AFFECTS MULTIPLE MARK
  2651.               SCROLL WINDOWS AS FOLLOWS:
  2652.  
  2653.               1. IF THE INSERT OR DELETE KEYS ARE SET AS EXIT KEYS BY
  2654.                  ROUTINE B4SCRL THE INSERT AND DELETE KEYS WILL NO
  2655.                  LONGER MARK AND UN-MARK ENTRIES.  THE "+" AND "-" KEYS
  2656.                  WILL STILL MARK AND UN-MARK ENTRIES.
  2657.  
  2658.               2. IF B4SCRL'S ARGUMENT EXIT$ CONTAINS AN "X"  THE SPACE
  2659.                  BAR DOES NOT MARK/UN-MARK ALL ENTRIES.
  2660.  
  2661.               SINGLE MARK SCROLL WINDOW ( KIND$ = "S" ) --- Provided
  2662.               there is more than one item ( ENTRIES% > 1 ) in the scroll
  2663.               window, one item will be marked as in the preceding
  2664.               example for a "MULTIPLE MARK" scroll window.  Only one
  2665.               item can be marked, however.  The marked item follows the
  2666.               scroll bar.  Pressing TAB, SHIFT TAB, ENTER, RETURN or ESC
  2667.               will exit the scroll window with the selected item in
  2668.               RTRN% and a representation of the "exit key" in RKEY%.  If
  2669.               the scroll bar is over LIST$(2), RTRN% = 2 was selected.
  2670.  
  2671.               VIEW ONLY SCROLL WINDOW ( KIND$ = "V" OR "SV" ) --- The
  2672.               window will be filled with the strings in LIST$() and the
  2673.               routine will be exited.  IF KIND$ = "SV" the scroll window
  2674.               is "VIEW ONLY -SINGLE MARK" scroll window. If ENTRIES% > 1
  2675.               the item designated by the value of RTRN% will be marked.
  2676.               ( See description for RTRN%. )
  2677.  
  2678.               LIST SCROLL WINDOW ( KIND$ = "L" ) --- This generates a
  2679.               list scroll window.  There is no scroll bar.  This may be
  2680.               useful for viewing virtual scroll windows.  It may be used
  2681.               for regular scroll windows also.
  2682.  
  2683.               Any other value for KIND$ when entering SCRLWIND results
  2684.               in a "REGULAR" scroll window. After the scroll bar is
  2685.               moved to the selected item, pressing the ENTER or RETURN
  2686.               key returns the selected item in RTRN%.  Routine B4SCRL
  2687.               provides alternate means to exit SCRLWIND.
  2688.  
  2689.                            RTRN% serves two purposes. One is to place
  2690.               the scroll bar over the item specified by RTRN% when
  2691.               entering SCRLWIND.  If RTRN% < 1 or RTRN% > ENTRIES%,
  2692.  
  2693.               RTRN% defaults to 1 and the scroll bar will be positioned
  2694.               over the first item in the window.
  2695.  
  2696.               EXAMPLE: RTRN% = 2  --  If there are a minimum of two
  2697.               items in the scroll window ( ENTRIES% > 1 ) the scroll
  2698.               bar will be over LIST$(2) when entering SCRLWIND.
  2699.  
  2700.  
  2701.  
  2702.                                        37
  2703.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.               RTRN% also returns the selected item when exiting
  2715.               SCRLWIND.   If RTRN% = 2, LIST$(2) was selected when
  2716.               SCRLWIND was exited.  If routine B4SCRL is used prior to
  2717.               calling SCRLWIND it is possible to exit SCRLWIND on any
  2718.               attempt to scroll before the first entry in the scroll
  2719.               window or past the last entry in the scroll window. This
  2720.               feature affects the value of RTRN% ( SEE ROUTINE B4SCRL).
  2721.  
  2722.               NOTE: THE ITEM SELECTED IN LIST$(), AS INDICTED BY THE
  2723.               VALUE OF RTRN%, MAY CONTAIN A "@" TO INDICATE THE KEY
  2724.               CHARACTER.  IF IT IS NECESSARY TO PRINT THE ITEM THE "@"
  2725.               CAN BE REMOVED FROM IT USING THE FOLLOWING FUNCTION.
  2726.  
  2727.               ' FUNCTIONS MUST BE DECLARED.  RTRN% = ITEM # SELECTED
  2728.               ' FROM LIST$().
  2729.  
  2730.               DECLARE FUNCTION NO$( ITEM$ )
  2731.               '( Place this at the start of the module.)
  2732.               ' IF RTRN% = 2 AND LIST$(RTRN%) = "Save F@ile", LIST$(2)
  2733.               ' CAN BE PRINTED AS "Save File" as follows.
  2734.  
  2735.               PRINT NO$( LIST$(RTRN%) )
  2736.               ----------------------------------------------------------
  2737.               ' INCLUDE THIS FUNCTION IN YOUR PROGRAM
  2738.  
  2739.               FUNCTION NO$ ( ITEM$ )
  2740.                 A% = INSTR ( ITEM$, "@" )
  2741.                 IF A% < 3 THEN        ' "@" SHOULD NOT BE IN POSITION
  2742.                    NO$ = ITEM$        ' 1 OR 2, OR NO "@" IS IN ITEM$.
  2743.                 ELSE
  2744.                    NO$ = LEFT$(ITEM$, A% - 1) + MID$(ITEM$, A% + 1)
  2745.                 END IF
  2746.               END FUNCTION
  2747.               ----------------------------------------------------------
  2748.                            LI%, on entry to routine SCRLWIND, specifies
  2749.               which row ( of the interior of the scroll window ) to
  2750.               place the scroll bar on.  It is used, on entry, with
  2751.               argument RTRN% to place the scroll bar over a specific
  2752.               entry on a specific row.  This is useful if it is
  2753.               necessary to exit a scroll window and re-enter it with the
  2754.               scroll bar over the same entry and on the same line as on
  2755.               the previous exit.  Set this argument to one if it is not
  2756.               required . The following restrictions apply.
  2757.  
  2758.               1. If LI% is less than one or LI% is greater than the
  2759.                  number of entries ( ENTRIES% ) LI% is indeterminate.
  2760.                  The scroll bar will be positioned over the entry
  2761.                  specified by argument RTRN%.
  2762.  
  2763.               2. Argument RTRN% determines the line the scroll bar will
  2764.                  occupy ( argument LI% is ignored ) if an attempt is
  2765.  
  2766.  
  2767.  
  2768.                                        38
  2769.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.                  made to place an entry on a line greater than the
  2780.                  subscript of the entry.  For example, LIST$(2) can not
  2781.                  be placed on line 3 of the scroll window.  This would
  2782.                  cause line one to be blank.  If RTRN% = 2 on entry, LI%
  2783.                  defaults to 2 also, if LI% is set to a number higher
  2784.                  than 2.
  2785.  
  2786.               3. If all of the entries fit in the scroll window argument
  2787.                  LI% is ignored on entry.  The scroll bar will occupy
  2788.                  the line based on the value of RTRN%.  If RTRN% = 3 the
  2789.                  scroll bar will be positioned on line 3 regardless of
  2790.                  the value of LI%
  2791.  
  2792.               4. If there are more entries than interior rows in the
  2793.                  scroll window, the last "interior rows" of entries fill
  2794.                  in from the bottom of the scroll window.  For example,
  2795.                  assuming a scroll window has 10 interior rows and 20
  2796.                  entries, the 20th entry can be positioned no higher
  2797.                  than the 10th interior row, the 19th entry can be
  2798.                  positioned no higher than the ninth interior row, and
  2799.                  so on.  If one of the last "interior rows" of entries
  2800.                  is specified by argument RTRN% on entry, and LI%
  2801.                  attempts to place the entry on row higher than outlined
  2802.                  above, LI% is adjusted appropriately.
  2803.  
  2804.               On exit from routine SCRLWIND, LI% equals the interior row
  2805.               number of the scroll window that the scroll bar occupied
  2806.               prior to the exit.
  2807.  
  2808.                            FC% is used with virtual scroll windows to
  2809.               position a specified string position for the entries in
  2810.               the scroll window on the first useable column (2) of the
  2811.               scroll window.  On entry to SCRLWIND, FC% sets the string
  2812.               position for the first column of the scroll window.  On
  2813.               exit FC% points to the string position occupying column
  2814.               two.  FC% IS ONLY APPLICABLE TO VIRTUAL SCROLL WINDOWS.
  2815.               FC% has one purpose.  It allows re-entry into a virtual
  2816.               scroll window exactly as it was displayed on exit if used
  2817.               with arguments RTRN% and LI% on re-entry.  Set this
  2818.               argument to one if it is not required.
  2819.  
  2820.               EXAMPLE:  On entry FC% = 5 and LIST$(1) ="12345678901234".
  2821.                         "5678901234" will be displayed in a virtual
  2822.                         scroll window.   The first displayed character
  2823.                         in LIST$(1) will be "5".
  2824.  
  2825.                            RKEY% represents the key or action used to
  2826.               exit SCRLWIND.
  2827.  
  2828.               RKEY% may equal any of the following.
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.                                        39
  2835.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.               RKEY%          EXIT KEY/ACTION         KIND$
  2846.  
  2847.               ** 1 to 10 --- F1 to F10               ALL
  2848.               ** 11 -------- PAGE UP                 ALL ( *EXTENDABLE )
  2849.               ** 12 -------- PAGE DOWN               ALL ( *EXTENDABLE )
  2850.                  13 -------- ENTER ( RETURN ) or     ALL
  2851.                              AUTO-EXIT FEATURE.
  2852.                              < OK SELECTED )         ALL ( > 0 BUTTONS )
  2853.               ** 13 -------- MOUSE SELECTION ( Single
  2854.                              or double click )       ALL
  2855.               ** 14 -------- SHIFT TAB               ALL
  2856.                              LEFT ARROW              ALL ( NON-VIRTUAL )
  2857.               ** 15 -------- TAB                     ALL
  2858.                              RIGHT ARROW             ALL ( NON-VIRTUAL )
  2859.               ** 16 -------- UP ARROW/MOUSE          ALL (**EXTENDABLE )
  2860.               ** 19 -------- DOWN ARROW/MOUSE        ALL (**EXTENDABLE )
  2861.                  27 -------- ESC                     ALL
  2862.                              < CANCEL > SELECTED     ALL ( 2 BUTTONS )
  2863.               ** 30 -------- HOME                    ALL (**EXTENDABLE )
  2864.               ** 35 -------- END                     ALL (**EXTENDABLE )
  2865.               ** 40 -------- INSERT                  ALL
  2866.               ** 45 -------- DELETE                  ALL
  2867.               ** 50 -------- MARK an entry           "M" (**EXTENDABLE )
  2868.               ** 55 -------- UN-MARK an entry        "M" (**EXTENDABLE )
  2869.               ** 200 ------- Mouse pressed outside   ALL ( NO BUTTONS )
  2870.                              of scroll window.
  2871.  
  2872.               ** Requires calling routine B4SCRL prior to calling
  2873.                  routine SCRLWIND.  ( SEE ROUTINE B4SCRL ).
  2874.  
  2875.                            KEYATTR% is the color of the key character
  2876.               for each item in the scroll window.  If KEYATTR% = 0
  2877.               the key character will be the same color as the other
  2878.               characters for each window item.  This would be
  2879.               appropriate if the first character in each item is ALWAYS
  2880.               the key character.  KEYATTR% MUST EQUAL ZERO FOR A SCROLL
  2881.               WINDOW TO BE A VIRTUAL SCROLL WINDOW.  IF KEYATTR% = 0 THE
  2882.               SCROLL WINDOW IS TREATED AS A VIRTUAL SCROLL WINDOW.
  2883.               CHECKS TO DETERMINE IF THE ELEMENTS OF LIST$() ARE TOO
  2884.               LONG TO FIT IN THE WINDOW ARE NOT MADE.  Setting KEYATTR%
  2885.               to a different color, or high intensity, allows users to
  2886.               distinguish the character as the key character for each
  2887.               item in the list.  KEYATTR% has no effect on the
  2888.               background color of an item when it is covered by the
  2889.               scroll bar.  It can effect the background color for the
  2890.               key character.  This is useful for computers without high
  2891.               intensity or color capabilities.  IF KEYATTR% <> 0 AND ANY
  2892.               SELECTION IN THE LIST WILL NOT FIT IN THE SCROLL WINDOW
  2893.               ALLOWING A LEADING AND TRAILING SPACE AN ERROR WILL BE
  2894.               REPORTED.   SCROLL WINDOWS WITH BUTTONS ARE, IN EFFECT,
  2895.               REDUCED IN WIDTH BY SIX SPACES.  THEREFORE, IF KEYATTR% <>
  2896.               0 THE SCROLL WINDOW MAY NOT BE A VIRTUAL SCROLL WINDOW.
  2897.  
  2898.  
  2899.  
  2900.                                        40
  2901.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.                            SCROLLBAR% determines if scroll bars on the
  2912.               right and bottom border are displayed.  Pressing the mouse
  2913.               on a scroll bar arrow simulates pressing the corresponding
  2914.               arrow key.  If SCROLLBAR% > 0 the scroll bars will be
  2915.               displayed with the following exceptions.
  2916.  
  2917.               1. If the scroll window has less than 3 interior rows the
  2918.                  vertical scroll bar is not displayed.  The scroll
  2919.                  arrows will, however, be displayed on scroll windows
  2920.                  with two interior rows.
  2921.  
  2922.               2. If the scroll window is made an "EXTENDABLE" scroll
  2923.                  window by a previous call to routine B4SCRL the
  2924.                  vertical bar is not appropriate and not displayed.
  2925.  
  2926.               3. If the scroll window is NOT a virtual scroll window the
  2927.                  horizontal scroll bar is not necessary and is not
  2928.                  displayed.
  2929.  
  2930.                            BUT% allows < OK > and < CANCEL > buttons for
  2931.               the scroll window.  Buttons are selected by moving the
  2932.               cursor to the button using the tab or shift tab keys. If
  2933.               ENTER or the SPACE BAR is pressed and the cursor is on a
  2934.               button , the button is selected.  If the mouse is released
  2935.               with the mouse cursor over a button, the button is
  2936.               selected.  If BUT% = 1 the < OK > button is displayed.  If
  2937.               BUT% = 2 the < OK > and < CANCEL > buttons are displayed.
  2938.               Selecting the < OK > button simulates pressing the ENTER
  2939.               key on a selection (RKEY% = 13).  Selecting the < CANCEL >
  2940.               button simulates pressing ESC (RKEY% = 27).  IF BUT% = 1
  2941.               the ESC key will not exit unless an "E" is included in
  2942.               routine B4SCRL's argument EXIT$.  Using buttons reduces
  2943.               the interior rows of the scroll window by four and the
  2944.               interior width of the scroll window by six.  This is
  2945.               required to "make room" for the buttons.
  2946.  
  2947.               NOTE: ALTHOUGH BUTTONS ARE ALLOWED WITH "EXTENDABLE" ( SEE
  2948.               ROUTINE B4SCRL ) SCROLL WINDOWS, PERFORMANCE ( ESPECIALLY
  2949.               IN 286 OR SLOWER PROCESSORS) IS SACRIFICED.  IT IS
  2950.               SUGGESTED EXTENDABLE SCROLL WINDOWS ARE USED WITHOUT
  2951.               BUTTONS.  IF BUTTONS ARE REQUIRED SPEED CAN BE ENHANCED BY
  2952.               USING FUNCTION CHOICEBAR, FOR THE BUTTONS, WITH ROUTINE
  2953.               SCRLWIND, TO OBTAIN THE BUTTON EFFECT.  THIS WILL REQUIRE
  2954.               USING A "T" IN ROUTINE B4SCRL'S ARGUMENT EXIT$ TO ALLOW
  2955.               THE TAB AND SHIFT/TAB KEYS TO EXIT FROM THE SCROLL WINDOW
  2956.               AND ENTER FUNCTION CHOICBAR.  IT WILL ALSO REQUIRE AN "O"
  2957.               IN ROUTINE B4SCRL'S ARGUMENT EXIT$.  THIS WILL EXIT
  2958.               ROUTINE SCRLWIND IF THE MOUSE IS PRESSED OUTSIDE OF SAME.
  2959.               A CHECK CAN BE MADE WHEN THE MOUSE IS PRESSED OUTSIDE OF
  2960.               THE SCROLL WINDOW TO DETERMINE IF IT IS PRESSED ON A
  2961.               CHOICEBAR BUTTON.  SEE THE SAMPLE FILE SCRLRAND.BAS.
  2962.  
  2963.  
  2964.  
  2965.  
  2966.                                        41
  2967.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.               -------------------------------------------------------
  2978.               'EXAMPLE OF A CALL TO SCRLWIND - AUTO EXIT SCROLL WINDOW
  2979.  
  2980.               DIM LIST$(11), INFO$(11)
  2981.               FOR X% = 1 TO 11              'ALWAYS START WITH 1.
  2982.                  READ LIST$(X%)
  2983.                  READ INFO$(X%)             'ONLY INCLUDE IF INFO-LINE
  2984.               NEXT                          'IS USED.
  2985.  
  2986.               CALL MAKEWIND(15, "", 1, 1, 20, 17, 112, 2)
  2987.               KIND$ = "A" : RTRN% = 3: KEYATTR% = 116: LI%=1: FC%=1
  2988.               CALL SCRLWIND (LIST$(), INFO$(), "", 11, KIND$, RTRN%, LI%,
  2989.                              FC%, RKEY%, 116, 1, 1)
  2990.  
  2991.               ' THE ABOVE CALL TO SCRLWIND MUST BE TYPED ON ONE LINE IN
  2992.               ' QB/QBX.
  2993.  
  2994.               DATA ONE                          : 'LIST$(1)
  2995.               DATA INFO-LINE FOR ONE            : 'INFO$(1)
  2996.               DATA TW@O                         : 'LIST$(2)
  2997.               ' FOR ABOVE KEY CHAR. = "W"
  2998.               DATA INFO-LINE FOR TWO            : 'INFO$(2)
  2999.               DATA TH@REE
  3000.               ' FOR ABOVE KEY CHAR. = "H"
  3001.               DATA INFO-LINE FOR THREE
  3002.               DATA FOUR
  3003.               DATA INFO-LINE FOR FOUR
  3004.               DATA FIV@E
  3005.               ' FOR ABOVE KEY CHAR. = "V"
  3006.               DATA INFO-LINE FOR FIVE
  3007.               DATA "-"                         : 'LIST$(5)
  3008.               ' ABOVE DATA STATEMENT PUTS A SEGMENTING LINE IN ROW 6
  3009.               DATA ""
  3010.               : 'NULL IN INFO$(5)
  3011.               DATA SIX@
  3012.               ' FOR ABOVE KEY CHAR. = "X"
  3013.               DATA INFO-LINE FOR SIX
  3014.               DATA SEVEN
  3015.               DATA INFO-LINE FOR SEVEN
  3016.               DATA EIGHT
  3017.               DATA INFO-LINE FOR EIGHT
  3018.               DATA NINE
  3019.               DATA INFO-LINE FOR NINE
  3020.               DATA TEN                         : 'LIST$(11)
  3021.               DATA INFO-LINE FOR TEN           : 'INFO$(11)
  3022.               -------------------------------------------------------
  3023.               The scroll window is the window defined by the call to
  3024.               MAKEWIND as it is the active window when SCRLWIND is
  3025.               called.  The entries in the scroll window and the text for
  3026.               the info-line are the items in the data statements, as
  3027.               they are read into LIST$() and INFO$(). The fourth
  3028.               parameter in the call to SCRLWIND is the number of items
  3029.  
  3030.  
  3031.  
  3032.                                        42
  3033.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.               in the list ( 11 ).  As KIND$ ="A" before calling
  3044.               SCRLWIND, the scroll window is an "AUTO-EXIT SCROLL"
  3045.               window.  Since RTRN% = 3 when entering SCRLWIND the scroll
  3046.               bar will start over the third item ( THREE ).  The sixth
  3047.               DATA item for LIST$() loads LIST$(6) with "-".  Therefore,
  3048.               a line will print in row six of the scroll window.  The
  3049.               key character for each item will be red (KEYATTR% = 116 ).
  3050.               RTRN% will equal the selected item, and RKEY% will
  3051.               represent the exit key when SCRLWIND is exited.  As
  3052.               reading the data takes time, quicker scroll windows will
  3053.               be generated if all arrays used in scroll windows are
  3054.               filled using READ and DATA statement during program
  3055.               initialization.
  3056.  
  3057.          3.01 B4SCRL ( EXIT$, MARK$, TAGCOL%, NOREFRESH% )
  3058.  
  3059.               Description: Sets the "exit keys" or "exit circumstances",
  3060.               the marked ( tagged ) selections on entry, and
  3061.               marked selection arrow color for subsequent call to
  3062.               SCRLWIND.  May also be used to suppress the "refreshing"
  3063.               of a scroll window on entry.
  3064.  
  3065.               NOTE1: IT IS NOT NECESSARY TO CALL B4SCRL PRIOR TO CALLING
  3066.               SCRLWIND UNLESS ONE OF B4SCRL'S FEATURES ARE REQUIRED.
  3067.  
  3068.               NOTE2: B4SCRL ONLY AFFECTS THE NEXT CALL TO SCRLWIND FOR
  3069.               ALL ARGUMENTS.  THEREFORE, IF B4SCRL IS REQUIRED FOR A
  3070.               PARTICULAR SCROLL WINDOW IT MUST ALWAYS BE CALLED PRIOR TO
  3071.               CALLING SCRLWIND FOR THAT SCROLL WINDOW.
  3072.               ALWAYS PLACE A CALL TO B4SCRL, IF IT IS REQUIRED,
  3073.               IMMEDIATELY BEFORE THE CALL TO SCRLWIND.
  3074.  
  3075.               EXAMPLE: CALL B4SCRL (......   ' IF B4SCRL IS REQUIRED
  3076.                        CALL SCRLWIND (.....  ' IT MUST PRECEDE SCRLWIND.
  3077.                        CALL SCRLWIND (.......' THE PREVIOUS CALL TO
  3078.                                              ' B4SCRL DOES NOT AFFECT
  3079.                                              ' THIS CALL TO SCRLWIND.
  3080.               Arguments:   EXIT$ sets the exit keys or exit
  3081.               circumstances for a subsequent call to SCRLWIND.
  3082.               Normally SCRLWIND exits via the ESC or ENTER keys.  There
  3083.               is no need to use B4SCRL to provide alternate means to
  3084.               exit unless the scroll window requires same.  EXIT$ may be
  3085.               any combination of the following.
  3086.  
  3087.                 "E" ------- The ESC key will exit SCRLWIND.
  3088.                 "R" ------- The ENTER (RETURN) key will exit SCRLWIND.
  3089.                 "0" ------- The F10 key will exit SCRLWIND.
  3090.                 "1" to "9"- The F1 to F9 keys will exit SCRLWIND.
  3091.                 "I" ------- The INSERT key will exit SCRLWIND.
  3092.                 "D" ------- The DELETE key will exit SCRLWIND.
  3093.                 "T" ------- TAB and SHIFT/TAB keys will exit SCRLWIND
  3094.                             provided the scroll window has no buttons.
  3095.  
  3096.  
  3097.  
  3098.                                        43
  3099.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.                 "A" ------- RIGHT ARROW and LEFT ARROW keys will exit
  3110.                             SCRLWIND. SCRLWIND must be NON-VIRTUAL.
  3111.                 "M" ------- The mouse will exit SCRLWIND if it is
  3112.                             RELEASED with the cursor on a valid
  3113.                             selection. ( Single click )
  3114.                 "MC" ------ Double clicking the mouse on a selection
  3115.                             will exit.
  3116.                 "O" ------- The mouse will exit SCRLWIND if it is
  3117.                             pressed outside of the scroll window AND the
  3118.                             scroll window has no buttons.
  3119.                 "X" ------- This makes the scroll window an "EXTENDABLE"
  3120.                             scroll window.  Any attempt to scroll past
  3121.                             the last entry ( PAGE DOWN, DOWN ARROW OR
  3122.                             MOUSE ) in the scroll window or scroll
  3123.                             before the first entry ( PAGE UP, UP ARROW
  3124.                             OR MOUSE ) in the scroll window will exit
  3125.                             SCRLWIND.  The HOME or END keys exit
  3126.                             SCRLWIND.  If the scroll window is a
  3127.                             multiple mark scroll window ( argument KIND$
  3128.                             for routine SCRLWIND equals "M" ) any change
  3129.                             in mark status of an entry will exit
  3130.                             SCRLWIND.  ( FURTHER EXPLANATION AND
  3131.                             RESTRICTIONS FOLLOW.  )
  3132.  
  3133.               EXAMPLE: EXIT$ = "12DR"  The F1, F2, DELETE, and ENTER
  3134.                                        keys exit routine SCRLWIND.
  3135.  
  3136.               NOTE1:  IF EXIT$ CONTAINS AN "X" THE SCROLL WINDOW IS AN
  3137.               "EXTENDABLE" SCROLL WINDOW.  ALL ENTRIES MUST FIT IN THE
  3138.               SCROLL WINDOW OR AN ERROR WILL BE REPORTED.  IF THERE ARE
  3139.               10 INTERIOR ROWS IN THE SCROLL WINDOW THE NUMBER OF
  3140.               ENTRIES ( ARGUMENT ENTRIES% FOR ROUTINE SCRLWIND ) MUST BE
  3141.               EQUAL TO, OR LESS THAN, 10.
  3142.  
  3143.               NOTE2:  IF THE INSERT OR DELETE KEYS ARE USED AS EXIT KEYS
  3144.               AND THE SCROLL WINDOW IS A MULTIPLE MARK, EXTENDABLE,
  3145.               SCROLL WINDOW THE INSERT AND DELETE KEYS WILL NO LONGER
  3146.               MARK AND UN-MARK ENTRIES.  THE "+" AND "-" KEYS WILL STILL
  3147.               MARK AND UN-MARK ENTRIES, HOWEVER.
  3148.  
  3149.               Placing an "X" in EXIT$ makes the scroll window an
  3150.               "EXTENDABLE" scroll window.  This provides the ability to
  3151.               scroll through records in large random access, binary,
  3152.               ISAM, BTRIEVE, or many other data files.  On entry to
  3153.               SCRLWIND memory constraints may prohibit placing all
  3154.               records in a database in a scroll window.  With
  3155.               "EXTENDABLE" scroll windows, the first 15 records of a
  3156.               data file may be placed in a scroll window with 15
  3157.               interior rows.
  3158.  
  3159.               NOTE:  THE NUMBER OF INTERIOR ROWS IN A SCROLL WINDOW IS
  3160.               EQUAL TO THE NUMBER OF ROWS IN THE WINDOW ( AS SET BY THE
  3161.  
  3162.  
  3163.  
  3164.                                        44
  3165.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.               CALL TO MAKEWIND FOR THE SCROLL WINDOW ) MINUS 2 IF THE
  3176.               CALL TO MAKEWIND DID NOT SPECIFY A TITLE BOX.  IF THE CALL
  3177.               TO MAKEWIND SPECIFIED A TITLE BOX THE NUMBER OF INTERIOR
  3178.               ROWS EQUALS THE ROWS SET BY THE CALL TO MAKEWIND MINUS 4.
  3179.               IF BUTTONS ARE USED THE NUMBER OF INTERIOR ROWS IS REDUCED
  3180.               BY AN ADDITIONAL 4 ROWS.  USING BUTTONS IN "EXTENDABLE"
  3181.               SCROLL WINDOWS IS NOT RECOMMENDED AS A NOTICEABLE ( ESP-
  3182.               ECIALLY ON 286 OR SLOWER MICROPROCESSORS ) DEGRADATION
  3183.               WILL BE OBVIOUS.
  3184.  
  3185.               An attempt to scroll past the 15th record in the scroll
  3186.               window or before the first record in the scroll window
  3187.               causes SCRLWIND to be exited.  Argument RKEY% ( from
  3188.               routine SCRLWIND ) can be used to determine the key or
  3189.               circumstance which caused the exit.  The following lists
  3190.               the values returned by SCRLWIND's argument RKEY% which are
  3191.               unique to "EXTENDABLE" scroll windows.
  3192.  
  3193.               - RKEY% = 19 -- The DOWN ARROW was pressed or the MOUSE
  3194.                 was pressed on the windows bottom border ( SEE FOLLOWING
  3195.                 NOTE ) with the scroll bar on the last entry in the
  3196.                 scroll window.  An attempt is being made to access the
  3197.                 next record ( relative to the last record in the scroll
  3198.                 window ) in the data file.  On exit, a check should be
  3199.                 made to determine if the last record in the scroll
  3200.                 window is not the last record in the data file.  If it
  3201.                 is not, all records in SCRLWIND's arguments LIST$()
  3202.                 should be shifted to the preceding element of LIST$().
  3203.                 The last element of LIST$() should be filled with the
  3204.                 next record.
  3205.  
  3206.                     ( FILEPOINTER MUST = LAST RECORD IN SCROLL WINDOW )
  3207.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3208.                     ( ENTRIES% = NUMBER OF ENTRIES IN THE WINDOW )
  3209.  
  3210.                     IF FILEPOINTER < MAX THEN
  3211.                       FILEPOINTER = FILEPOINTER + 1
  3212.                       FOR X% = 1 TO ENTRIES% - 1
  3213.                          SWAP LIST$(X%), LIST$(X% + 1)
  3214.                       NEXT
  3215.                       ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3216.                       ' POSITION FILEPOINTER.
  3217.                       LIST$(ENTRIES%) = THE RECORD
  3218.                     END IF
  3219.  
  3220.                 The scroll window should then be re-entered.
  3221.                 FILEPOINTER POINTS TO THE LAST RECORD IN THE SCROLL
  3222.                 WINDOW.
  3223.  
  3224.               NOTE: RKEY% MAY ALSO EQUAL 19 IF THE SCROLL WINDOW IS A
  3225.               MULTIPLE MARK, EXTENDABLE, SCROLL WINDOW AND A MARK KEY
  3226.               ( INS, DEL, +, or - ) IS PRESSED WITH THE SCROLL BAR ON
  3227.  
  3228.  
  3229.  
  3230.                                        45
  3231.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.               THE LAST ENTRY.  IF THE ENTRY DOES NOT CHANGE "MARK"
  3242.               STATUS RKEY% WILL EQUAL 19 EMULATING THE DOWN ARROW KEY.
  3243.               IF THE ENTRY CHANGES "MARK" STATUS RKEY% WILL EQUAL 50 OR
  3244.               55.  SEE DESCRIPTIONS FOR RKEY% = 50 AND RKEY% = 55 TO SEE
  3245.               HOW TO MOVE TO THE NEXT RECORD WHEN RKEY% = 50 OR RKEY% =
  3246.               55.
  3247.  
  3248.               - RKEY% = 16 -- The UP ARROW was pressed or the MOUSE was
  3249.                 pressed on the top border with the scroll bar on the
  3250.                 first entry in the scroll window.  An attempt is being
  3251.                 made to access the preceding record ( relative to the
  3252.                 first record in the scroll window ) in the data file.
  3253.                 On exit, a check should be made to determine if the
  3254.                 first record in the scroll window is not the first
  3255.                 record in the data file.  If it is not, all records in
  3256.                 SCRLWIND's arguments LIST$() should be shifted to the
  3257.                 next element of LIST$().
  3258.  
  3259.                     ( FILEPOINTER MUST = FIRST RECORD IN SCROLL WINDOW )
  3260.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3261.                     ( ENTRIES% = NUMBER OF ENTRIES IN THE WINDOW )
  3262.  
  3263.                     IF FILEPOINTER > 1 THEN
  3264.                       FILEPOINTER = FILEPOINTER - 1
  3265.                       FOR X% = ENTRIES% TO 2 STEP - 1
  3266.                         SWAP LIST$(X%), LIST$(X% - 1)
  3267.                       NEXT
  3268.                      ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3269.                      ' POSITION FILEPOINTER .
  3270.                       LIST$(1) = THE RECORD
  3271.                     END IF
  3272.                 The scroll window should then be re-entered.
  3273.  
  3274.                 FILEPOINTER POINTS TO THE FIRST ENTRY IN THE WINDOW.
  3275.  
  3276.               - RKEY% = 11 -- The PAGE UP key was pressed.  A check
  3277.                 should be made to determine if the are enough preceding
  3278.                 records in the data file to update LIST$(1) to
  3279.                 LIST$( INTERIOR ROWS IN THE SCROLL WINDOW ) with
  3280.                 preceding records ( relative to the first record in the
  3281.                 scroll window).  If there are, LIST$() should be
  3282.                 refreshed with those records.
  3283.  
  3284.                     ( FILEPOINTER MUST = FIRST RECORD IN SCROLL WINDOW )
  3285.                     ( ROWS% = INTERIOR ROWS IN SCROLL WINDOW )
  3286.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3287.  
  3288.                     ENTRIES% WILL BE USED BY THE NEXT CALL TO SCRLWIND
  3289.                     TO SET THE NUMBER OF ENTRIES IN THE SCROLL WINDOW.
  3290.  
  3291.                     RTRN% WILL DETERMINE WHICH ENTRY WILL BE HIGHLIGHTED
  3292.                     ON THE NEXT CALL TO SCRLWIND.
  3293.  
  3294.  
  3295.  
  3296.                                        46
  3297.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.                     FILEPOINTER = FILEPOINTER - ROWS%
  3308.  
  3309.                     ( If there are not enough preceding records in the
  3310.                     scroll window FILEPOINTER should be set to the first
  3311.                     record. )
  3312.  
  3313.                     IF FILEPOINTER < 1 THEN FILEPOINTER = 1
  3314.  
  3315.                     ENTRIES% = 0
  3316.                     WHILE ENTRIES% < ROWS% AND ENTRIES% < MAX
  3317.                       ENTRIES%=ENTRIES% + 1
  3318.                       ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3319.                       ' POSITION FILEPOINTER .
  3320.                       LIST%(ENTRIES%)= THE RECORD
  3321.                       FILEPOINTER = FILEPOINTER + 1
  3322.                     WEND
  3323.                     FILEPOINTER = FILEPOINTER - 1
  3324.                     RTRN% = 1     ' HIGHLIGHT FIRST SCROLL WINDOW ENTRY.
  3325.  
  3326.                 The scroll window should then be re-entered.
  3327.                 FILEPOINTER POINTS TO THE LAST ENTRY IN THE SCROLL
  3328.                 WINDOW.
  3329.  
  3330.               - RKEY% = 12 -- The PAGE DOWN key was pressed.  A check
  3331.                 should be made to determine if the are enough records
  3332.                 ( relative to the last record in the scroll window ) in
  3333.                 the data file to update LIST$(1) to LIST$( INTERIOR ROWS
  3334.                 IN THE SCROLL WINDOW ) with new records ( relative to
  3335.                 the last record in the scroll window ). If there are,
  3336.                 LIST$() should be refreshed with these records.
  3337.  
  3338.                     ( FILEPOINTER MUST = LAST RECORD IN SCROLL WINDOW )
  3339.                     ( ROWS% = INTERIOR ROWS IN SCROLL WINDOW )
  3340.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3341.  
  3342.                     ENTRIES% WILL BE USED BY THE NEXT CALL TO SCRLWIND
  3343.                     TO SET THE NUMBER OF ENTRIES IN THE SCROLL WINDOW.
  3344.  
  3345.                     RTRN% WILL DETERMINE WHICH ENTRY WILL BE HIGHLIGHTED
  3346.                     ON THE NEXT CALL TO SCRLWIND.
  3347.  
  3348.                     IF FILEPOINTER + ROWS > MAX THEN
  3349.                       FILEPOINTER = ( MAX - ROWS% + 1 )
  3350.                       IF FILEPOINTER < 1 THEN FILEPOINTER = 1
  3351.                     ELSE
  3352.                       FILEPOINTER = FILEPOINTER + 1
  3353.                     END IF
  3354.  
  3355.                     ENTRIES% = 0
  3356.                     WHILE ENTRIES% < ROWS% AND ENTRIES% < MAX
  3357.                      ENTRIES%=ENTRIES% + 1
  3358.                      ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3359.  
  3360.  
  3361.  
  3362.                                        47
  3363.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.                      ' POSITION FILEPOINTER.
  3374.                      LIST%(ENTRIES%) = THE RECORD
  3375.                      FILEPOINTER = FILEPOINTER + 1
  3376.                     WEND
  3377.                     FILEPOINTER = FILEPOINTER - 1
  3378.                     RTRN% = ENTRIES%
  3379.  
  3380.                 The scroll window should then be re-entered.
  3381.                 FILEPOINTER POINTS TO THE LAST ENTRY IN THE SCROLL
  3382.                 WINDOW.
  3383.  
  3384.               - RKEY% = 30 -- The HOME key was pressed.  The scroll
  3385.                 window should be filled with the first records in the
  3386.                 data file.
  3387.  
  3388.                     ( FILEPOINTER MUST = FIRST RECORD IN THE DATA FILE )
  3389.                     ( ROWS% = INTERIOR ROWS IN SCROLL WINDOW )
  3390.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3391.  
  3392.                     ENTRIES% WILL BE USED BY THE NEXT CALL TO SCRLWIND
  3393.                     TO SET THE NUMBER OF ENTRIES IN THE SCROLL WINDOW.
  3394.  
  3395.                     RTRN% WILL DETERMINE WHICH ENTRY WILL BE HIGHLIGHTED
  3396.                     ON THE NEXT CALL TO SCRLWIND.
  3397.  
  3398.                     FILEPOINTER = 1
  3399.                     ENTRIES% = 0
  3400.                     WHILE ENTRIES% < ROWS% AND ENTRIES% < MAX
  3401.                      ENTRIES%=ENTRIES% + 1
  3402.                      ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3403.                      ' POSITION FILEPOINTER .
  3404.                      LIST%(ENTRIES%)=RECORD
  3405.                      FILEPOINTER = FILEPOINTER + 1
  3406.                     WEND
  3407.                     FILEPOINTER = FILEPOINTER - 1
  3408.                     RTRN% = 1    ' HIGHLIGHT FIRST SCROLL WINDOW ENTRY.
  3409.  
  3410.                 The scroll window should then be re-entered.
  3411.                 FILEPOINTER POINTS TO THE LAST RECORD IN THE SCROLL
  3412.                 WINDOW.
  3413.  
  3414.               - RKEY% = 35 -- The END key was pressed.  The scroll
  3415.                 window should be filled with the last records in the
  3416.                 data file.
  3417.  
  3418.                     ( FILEPOINTER MUST BE SET TO THE CORRECT RECORD )
  3419.                     ( ROWS% = INTERIOR ROWS IN SCROLL WINDOW )
  3420.                     ( MAX = NUMBER OF RECORDS IN FILE )
  3421.  
  3422.                     ENTRIES% WILL BE USED BY THE NEXT CALL TO SCRLWIND
  3423.                     TO SET THE NUMBER OF ENTRIES IN THE SCROLL WINDOW.
  3424.  
  3425.  
  3426.  
  3427.  
  3428.                                        48
  3429.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.                     RTRN% WILL DETERMINE WHICH ENTRY WILL BE HIGHLIGHTED
  3440.                     ON THE NEXT CALL TO SCRLWIND.
  3441.  
  3442.                     FILEPOINTER = MAX - ROWS% + 1
  3443.                     IF FILEPOINTER < 1 THEN FILEPOINTER = 1
  3444.  
  3445.                     ENTRIES% = 0
  3446.                     WHILE ENTRIES% < ROWS% AND ENTRIES% < MAX
  3447.                      ENTRIES%=ENTRIES% + 1
  3448.                      ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3449.                      ' POSITION FILEPOINTER .
  3450.                      LIST%(ENTRIES%)=RECORD#
  3451.                      FILEPOINTER = FILEPOINTER + 1
  3452.                     WEND
  3453.                     FILEPOINTER = FILEPOINTER - 1
  3454.                     RTRN% = ENTRIES%   ' HIGHLIGHT LAST ENTRY.
  3455.  
  3456.                 The scroll window should then be re-entered.
  3457.  
  3458.                 FILEPOINTER POINTS TO THE LAST RECORD IN THE SCROLL
  3459.                 WINDOW AND IN THE DATA FILE.
  3460.  
  3461.               - RKEY% = 50 -- The scroll window is a "MARK", extendable,
  3462.                 scroll window.  An un-marked entry was marked.  ( SEE
  3463.                 DESCRIPTION FOR ARGUMENT MARK$ FOR THIS ROUTINE ).  To
  3464.                 determine which record was marked;
  3465.  
  3466.                     ( FILEPOINTER MUST = FIRST RECORD IN SCROLL WINDOW )
  3467.                     ( RTRN% IS RETURNED BY ROUTINE SCRLWIND. IT
  3468.                       POINTS TO THE "MARKED" ENTRY )
  3469.  
  3470.                     ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3471.                     ' POSITION FILEPOINTER + RTRN% - 1.
  3472.  
  3473.                     ' UPDATE THE RECORD TO SHOW IT IS MARKED.
  3474.  
  3475.                     RTRN% = RTRN% + 1     ' MOVE TO THE NEXT ENTRY
  3476.  
  3477.                     IF RTRN% > ENTRIES% - GO TO "DOWN ARROW" ROUTINE.
  3478.                                           ( RKEY% = 16 )
  3479.  
  3480.                 The scroll window should then be re-entered.
  3481.                 FILEPOINTER POINTS TO THE FIRST RECORD IN THE SCROLL
  3482.                 WINDOW.
  3483.  
  3484.               - RKEY% = 55 -- The scroll window is a "MARK" ( and
  3485.                 "EXTENDABLE" ) scroll window.  An marked entry was un-
  3486.                 marked.  ( SEE DESCRIPTION FOR ARGUMENT MARK$ FOR THIS
  3487.                 ROUTINE).  To determine which record was marked;
  3488.  
  3489.                     ( FILEPOINTER MUST = FIRST RECORD IN SCROLL WINDOW )
  3490.                     ( RTRN% IS RETURNED BY ROUTINE SCRLWIND. IT
  3491.  
  3492.  
  3493.  
  3494.                                        49
  3495.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.                       POINTS TO THE "MARKED" ENTRY )
  3506.                     ' DO WHAT YOUR DATABASE REQUIRES GET A RECORD AT
  3507.                     ' POSITION FILEPOINTER + RTRN% - 1.
  3508.  
  3509.                     ' UPDATE THE RECORD TO SHOW IT IS NOT MARKED.
  3510.  
  3511.                     RTRN% = RTRN% + 1     ' MOVE TO THE NEXT ENTRY
  3512.  
  3513.                     IF RTRN% > ENTRIES% -- GO TO THE ROUTINE USED FOR
  3514.                                            THE DOWN ARROW ( RKEY% = 16 )
  3515.  
  3516.                 The scroll window should then be re-entered.
  3517.  
  3518.                 FILEPOINTER POINTS TO THE FIRST RECORD IN THE SCROLL
  3519.                 WINDOW.
  3520.  
  3521.                 NOTE: "EXTENDABLE" SCROLL WINDOWS ONLY EXIT WITH RKEY%
  3522.                 EQUAL TO 50 OR RKEY% EQUAL TO 55 IF A CHANGE IN "MARK"
  3523.                 STATUS FOR AN ENTRY OCCURS.  AN ATTEMPT TO MARK A
  3524.                 PREVIOUSLY MARKED ENTRY OR UN-MARK A PREVIOUSLY UN-
  3525.                 MARKED ENTRY WILL NOT EXIT ROUTINE SCRLWIND.
  3526.  
  3527.               - RKEY% = 1 TO 10, 13-15, 27, 40, 45, or 200  -- These
  3528.               values for RKEY% are not unique to an "EXTENDABLE" scroll
  3529.               window.  They remain available as a means to exit an
  3530.               "EXTENDABLE" scroll window, however.  SEE ARGUMENT RKEY%
  3531.               FOR ROUTINE SCRLWIND.
  3532.  
  3533.               NOTE: WHEN A SCROLL WINDOW IS AN EXTENDABLE SCROLL WINDOW
  3534.               IT'S OPTIONS ARE AFFECTED AS FOLLOWS:
  3535.  
  3536.               1. PRESSING THE FIRST LETTER OF AN ENTRY OR "KEY
  3537.                  CHARACTER" OF AN ENTRY DOES NOT MOVE THE SCROLL BAR TO
  3538.                  THE ENTRY.  AS THE SEARCH IS CONFINED TO THE ENTRIES IN
  3539.                  THE SCROLL WINDOW, AND ALL OF THE RECORDS ARE NOT IN
  3540.                  THE SCROLL WINDOW, "KEY CHARACTERS", ARE USELESS.
  3541.  
  3542.               2. AUTO-EXIT SCROLL WINDOWS ARE NOT PERMITTED ALSO, FOR
  3543.                  THE SAME REASON.  TO SEARCH FOR A RECORD, THE F1 KEY,
  3544.                  FOR EXAMPLE, CAN BE USED TO EXIT SCRLWIND AND PROMPT
  3545.                  THE USER FOR A SEARCH CRITERIA.  THE DATABASE CAN BE
  3546.                  SEARCHED, AND IF A MATCH IS FOUND, SCRLWIND MAY BE RE-
  3547.                  ENTERED DISPLAYING THE "FOUND" RECORD.
  3548.  
  3549.               3. THE OPTIONAL SCROLLBAR ON THE RIGHT BORDER OF THE
  3550.                  SCROLL WINDOW IS DISABLED FOR THE CALL TO SCRLWIND.
  3551.  
  3552.               4. THE SPACE BAR ( PRINT KEY ON SOME SYSTEMS ) DOES NOT
  3553.                  MARK/UN-UNMARK ALL ENTRIES IN MULTIPLE MARK SCROLL
  3554.                  WINDOWS.
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.                                        50
  3561.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.                            MARK$ is a string representing those entries,
  3572.               on entering SCRLWIND, to be marked.  This is only
  3573.               appropriate if the scroll window is a multiple mark scroll
  3574.               window ( SCRLWIND's argument KIND$ = "M" ).  MARK$ must be
  3575.               the exact length as the number of entries in the scroll
  3576.               window.  IF IT IS NOT IT IS IGNORED!  On entry to routine
  3577.               SCRLWIND a space ( CHR$(32) ) in MARK$ is decoded as an
  3578.               un-marked entry.  If the first character of MARK$ = " "
  3579.               the first entry in the scroll window will not be marked.
  3580.               An arrow ( CHR$(16) ) in MARK$ is decoded as a marked
  3581.               entry.  If the second character of MARK$ = CHR$(16) the
  3582.               second entry in the scroll window is marked.  Each
  3583.               character in MARK$ represents a marked or un-marked entry
  3584.               in the scroll window.  On exit from routine SCRLWIND,
  3585.               SCRLWIND's argument KIND$ holds the string representation
  3586.               for those marked and un-marked items.  B4SCRL's argument
  3587.               MARK$ holds the string representation on entry only.  If
  3588.               the scroll window is to be re-entered it is necessary to
  3589.               refresh MARK$.  The following example demonstrates this.
  3590.  
  3591.               REENTER:
  3592.               KIND$ = "M"     ' MAKE A MULTIPLE MARK SCROLL WINDOW
  3593.               CALL B4SCRL ("", MARK$ ) ' ENTER WITH SOME ENTRIES MARKED.
  3594.  
  3595.               ' WHILE IN THE SCROLL WINDOW ENVIRONMENT THE MARKED
  3596.               ' ENTRIES MAY CHANGE.
  3597.               CALL SCRLWIND ( L$(), I$(), TL$, ENTRIES%, KIND$ ........
  3598.               ' KIND$ REPRESENTS THE MARKED ENTRIES ON EXIT
  3599.  
  3600.               MARK$ = KIND$    ' MARK$ MUST BE REFRESHED IF THE SCROLL
  3601.                                ' WINDOW IS TO BE RE-ENTERED
  3602.  
  3603.               ' KIND$ = "" IF NOTHING WAS MARKED.  IF LENGTH OF MARK$ IS
  3604.               ' NOT ENTRIES% LONG IT IS IGNORED, THEREFORE ON RE-ENTRY
  3605.               ' NO ENTRIES ARE MARKED.
  3606.  
  3607.               GOTO REENTER
  3608.  
  3609.               NOTE: IT IS THE PROGRAMMER'S RESPONSIBILITY TO ASSURE
  3610.               MARK$ CONTAINS SPACES ( " " ) AND ARROWS ( CHR$(16) )
  3611.               ONLY.  ANY OTHER CHARACTERS WILL MARK ENTRIES WITH THAT
  3612.               CHARACTER ON ENTRY ONLY.  IF THE ENTRY IS UN-MARKED AND
  3613.               RE-MARKED IN THE SCROLL WINDOW ENVIRONMENT THE NORMAL MARK
  3614.               CHARACTER IS USED.
  3615.  
  3616.                            TAGCOL% sets the color of the marked "tagged"
  3617.               selection  arrow for mark scroll windows.  If TAGCOL% = 0
  3618.               the arrow assumes the same color as the text in the scroll
  3619.               window.  TAGCOL% is adjusted to TAGCOL% AND 15 if it is
  3620.               set over 15. It only affects the arrow's foreground color.
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.                                        51
  3627.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.                            NOREFRESH% can be used to re-enter a scroll
  3638.               window without re-printing the text in same.  It is used
  3639.               to enhance the speed on re-entry and avoid any flicker by
  3640.               needlessly re-printing the text.  If NOREFRESH% = 0 ( the
  3641.               default without calling B4SCRL ) the scroll window is
  3642.               refreshed on entry.  If NOREFRESH% = 1 the scroll window
  3643.               is not refreshed on entry.
  3644.  
  3645.               NOTE: SETTING NOREFRESH% TO ONE IS ONLY APPROPRIATE IF....
  3646.  
  3647.                     1. The scroll window is already displayed.
  3648.  
  3649.                     2. The scroll window is being re-entered in the same
  3650.                        state as it was exited.
  3651.  
  3652.          3.02 SCROLLPRINT ( ROW%, LC%, ATTR% )
  3653.  
  3654.               Description: Set up routine for a call to routine SCRLWIND.
  3655.               Allows routine SCRLWIND to print the selected entry of a
  3656.               NON-VIRTUAL scroll window at any screen location while
  3657.               scrolling through the scroll window.
  3658.  
  3659.               NOTE: SCROLLPRINT IS IGNORED FOR VIRTUAL AND "VIEW ONLY"
  3660.               SCROLL WINDOWS.  ONLY WORKS FOR THE NEXT ( SINGLE ) CALL
  3661.               TO ROUTINE SCRLWIND. MUST BE CALLED PRIOR TO ANY CALL TO
  3662.               SCRLWIND TO FUNCTION.
  3663.  
  3664.               EXAMPLE:  CALL SCROLLPRINT ..
  3665.                         CALL SCRLWIND .....(SCROLLPRINT is effective)
  3666.  
  3667.                         CALL SCRLWIND .....(SCROLLPRINT is not effective)
  3668.  
  3669.               Arguments:   ROW% is the display row position where
  3670.               the selected scroll window entry will print.
  3671.  
  3672.                            LC% is the display's left column position
  3673.               where the selected scroll window entry print starts. THE
  3674.               PRINTED TEXT IS PADDED WITH TRAILING SPACES SO IT'S LENGTH IS
  3675.               ALWAYS THE WIDTH OF THE SCROLL WINDOW'S INTERIOR ROW MINUS TWO.
  3676.               IT IS TRUNCATED IF IT WILL WILL NOT FIT THE LINE. IF LC% > 8O
  3677.               TEXT$ IS NOT PRINTED.
  3678.  
  3679.                            ATTR% is the color of the printed text.
  3680.  
  3681.  
  3682.          3.03 MARKED% (KIND$, START%)
  3683.  
  3684.               Description: MARKED%(KIND$, START%) is a function used
  3685.               to decode SCRLWIND's argument KIND$ after a multiple mark
  3686.               scroll window is exited.  MARKED%(KIND$, START%) will equal
  3687.               the next position in KIND$ starting from position START%
  3688.               which contains a CHR$(16).  If the third element (item)
  3689.  
  3690.  
  3691.  
  3692.                                        52
  3693.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.               in LIST$() was marked in the call to SCRLWIND and START%
  3704.               =1, THEN: MARKED%(KIND$,START%) = 3.
  3705.  
  3706.               Arguments:   KIND$ is the string returned by calling
  3707.               SCRLWIND with the MARKED option ON. KIND$ = "" if no
  3708.               items were marked.
  3709.  
  3710.                           START% is the position in KIND$ to start
  3711.               searching for a CHR$(16).  A CHR$(16) in  KIND$
  3712.               represents a marked element in the string array LIST$()
  3713.               used in SCRLWIND. Every time a position in KIND$ is
  3714.               found which corresponds to a marked element of LIST$(),
  3715.               START% is set to a new value which is equal to the
  3716.               "marked" position in KIND$ + 1.  This is the next
  3717.               position in KIND$ where the search will start for
  3718.               another "marked" position. If MARKED% =0 there are no
  3719.               more "marked" positions in KIND$ or KIND$ = "".
  3720.               -------------------------------------------------------
  3721.               'EXAMPLE USING THE FUNCTION MARKED% (KIND$,START%) THIS
  3722.               'EXAMPLE PRINTS THE MARKED ITEMS IN LIST$() AFTER A CALL
  3723.               'TO SCRLWIND.
  3724.  
  3725.               'GIVEN: SCRLWIND HAS BEEN CALLED. THE FOURTH AND TENTH
  3726.               'ELEMENTS OF LIST$() WERE MARKED.  KIND$ WAS RETURNED BY
  3727.               'A PREVIOUS THE CALL TO SCRLWIND.
  3728.  
  3729.               DECLARE FUNCTION MARKED% (KIND$, START%) ' MUST BE IN
  3730.               '(Put this at the start of the module)   ' MODULE USING
  3731.                                                        ' FUNC. MARKED%.
  3732.  
  3733.               START%=1     ' START THE SEARCH AT POSITION 1 OF KIND$.
  3734.               DO                                   ' MARKED% = 0 AFTER
  3735.                  A% = MARKED%(KIND$, START%)       ' ALL MARKED ITEMS
  3736.                  IF A% = 0 THEN EXIT DO            ' ARE FOUND OR IF
  3737.                    PRINT LIST$(A%)
  3738.                  END IF
  3739.               LOOP
  3740.               -------------------------------------------------------
  3741.               The first time through the loop, MARKED% (KIND$, START%)
  3742.               will equal 4, and LIST$(4) will print.  START% is auto-
  3743.               matically set to 5, the next position to start searching
  3744.               KIND$ for a "marked" position in KIND$.  The second loop
  3745.               will set MARKED% (KIND$,START%) to 10 and LIST$(10) will
  3746.               print.  As there are no more marked positions, MARKED% =
  3747.               0 and the loop be exited.
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.                                        53
  3759.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.                        ****** INPUT ROUTINES ******
  3770.  
  3771.          Input routines provide the ability to generate a single
  3772.          character input field ( GETANS ), a single input field
  3773.          ( INPTWIND ), or multiple input fields ( MULTINPT ).  Full
  3774.          editing is provided within each field.  Up to 10 multiple input
  3775.          screens may be used, with each screen capable of supporting up
  3776.          to 150 fields. Fields may be defined as numeric, alpha/numeric,
  3777.          or date.  Numeric fields may be designated 0 to 6 decimal
  3778.          places and optionally padded with leading zeros.  Numerous
  3779.          additional options are available.  Two additional input
  3780.          routines provide input in the form of displayed choices.
  3781.          Function CHOICEBAR% provides up to 10 choices displayed on
  3782.          a "choicebar".  Function CHOICEWIND% generates a text filled
  3783.          window with a choicebar in same.
  3784.  
  3785.          4.00 INPTINIT ( DATEFORMAT%, ISDOT%, AT1%, BLANK%, SND% )
  3786.               See: Example - Input window
  3787.  
  3788.               Description: Initialization routine for input routines
  3789.               INPTWIND, MULTINPT, CHOICEWIND%, and CHOICEBAR%. Function
  3790.               CHOICEBAR% is used by routine SCRLWIND for the < OK > and
  3791.               < CANCEL > buttons.  INPTINIT MUST BE CALLED ONCE IN EVERY
  3792.               PROGRAM BEFORE ANY CALLS TO THESE ROUTINES (INCLUDING
  3793.               SCRLWIND WITH BUTTONS).
  3794.  
  3795.               NOTE: IF A CLEAR STATEMENT IS EXECUTED BY THE PROGRAM
  3796.               INPUT INITIALIZATION MEMORY IS LOST.  INPTINIT MUST BE
  3797.               CALLED AFTER A CLEAR STATEMENT TO RE-INITIALIZE INPUT
  3798.               INITIALIZATION MEMORY.
  3799.  
  3800.               Arguments:   DATEFORMAT% sets the valid date format for
  3801.               input routines INPTWIND and MULTINPT.  If a field in
  3802.               either input routine is designated a date field, the field
  3803.               can not be exited if the entered date does not match the
  3804.               date format as specified by DATEFORMAT%.  The valid date
  3805.               format varies predicated on the specified field width for
  3806.               the date field.  If set outside it's allowable range,
  3807.               DATEFORMAT% defaults to 1.  Listed are valid values for
  3808.               DATEFORMAT% and the corresponding valid date formats.
  3809.  
  3810.               DATEFORMAT%    DATE FORMAT            DATE FORMAT
  3811.                           (FIELD WIDTH = 10)     (FIELD WIDTH = 8)
  3812.  
  3813.                  1            MM-DD-YYYY             MM-DD-YY
  3814.                  2            MM/DD/YYYY             MM/DD/YY
  3815.                  3            DD-MM-YYYY             DD-MM-YY
  3816.                  4            DD/MM/YYYY             DD/MM/YY
  3817.                  5            DD.MM.YYYY             DD.MM.YY
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.                                        54
  3825.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.                            ISDOT% sets a period or comma for the decimal
  3836.               designator.  If ISDOT% = 1 the decimal designator is a
  3837.               period.  If ISDOT% = 0 the decimal designator is a comma.
  3838.               This is appropriate for some users outside of the USA.
  3839.  
  3840.                            AT1% determines if the cursor will enter
  3841.               input fields used in routines INPTWIND and MULTINPT on the
  3842.               first character of text in the field or after the last
  3843.               character of text in the field.  If AT1% = 1 the cursor
  3844.               will enter a field on the first character of text in the
  3845.               field.  If AT1% = 0 the cursor will enter fields at the
  3846.               position after the last character of text in the field.
  3847.  
  3848.               NOTE: NON-INPUT FIELDS DEFINED IN CALLS TO ROUTINE
  3849.               MAKEFIELD FOR ROUTINE MULTINPT MAY HAVE THE CURSOR SET TO
  3850.               ANY POSITION IN THE FIELD VIA THE CALL TO MAKEFIELD FOR
  3851.               AN INDIVIDUAL FIELD.
  3852.  
  3853.                            BLANK% allows text in input fields used in
  3854.               routines INPTWIND and MULTINPT to be erased when the FIRST
  3855.               valid key is pressed.  If BLANK% = 1 the text in a field
  3856.               will be erased when a valid key is pressed and the
  3857.               character represented by the key will be the first text
  3858.               character in the field.  If BLANK% = 0 the character
  3859.               represented by a valid key, when it is pressed, will be
  3860.               added to any text previously in the field.  The FIRST
  3861.               valid key pressed will not erase the field's text.
  3862.  
  3863.               NOTE: MANY FIELDS USED BY ROUTINE MULTINPT ARE NON-INPUT
  3864.               FIELDS.  THE VALUE OF BLANK% DOES NOT AFFECT THESE FIELDS.
  3865.  
  3866.                            SND% allows the default sound, as set by
  3867.               routine SETWIND, to be generated when and invalid
  3868.               key is pressed in routines INPTWIND and MULTINPT.  If
  3869.               SND% = 1 pressing an invalid character will make the
  3870.               default sound.  If SND% = 0 pressing an invalid character
  3871.               makes no sound.
  3872.  
  3873.  
  3874.          4.01 B4INPT (INPUTEXIT$, RESTRICT$)
  3875.  
  3876.               Description:  Sets "exit keys" and the field restrict
  3877.               string for a subsequent call to INPTWIND.
  3878.  
  3879.               NOTE1: CALLING ROUTINE B4INPT BEFORE A CALL TO ROUTINE
  3880.               INPTWIND IS NOT REQUIRED UNLESS ONE OF B4INPT'S SPECIAL
  3881.               FEATURES ARE REQUIRED.
  3882.  
  3883.               NOTE2: A CALL TO B4INPT ONLY AFFECTS THE NEXT CALL TO
  3884.               INPTWIND.   CALLS TO B4INPT SHOULD BE PLACED DIRECTLY
  3885.               BEFORE CALLS TO INPTWIND.
  3886.  
  3887.  
  3888.  
  3889.  
  3890.                                        55
  3891.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.               EXAMPLE:   CALL B4INPT (.......
  3902.                          CALL INPTWIND (.....   ' this is affected by
  3903.                                                 ' the call to B4INPT.
  3904.                          CALL INPTWIND (.....   ' this is not affected
  3905.                                                 ' by the call to B4INPT.
  3906.  
  3907.               Arguments:   INPUTEXIT$ sets the keys which will exit
  3908.               input routine INPTWIND.  INPUTEXIT$ does not affect input
  3909.               routine MULTINPT.  Routine SETINPT is used to set exit
  3910.               keys for individual MULTINPT screens.  If INPUTEXIT$ = ""
  3911.               the default keys will exit INPTWIND.  The default exit
  3912.               keys are dependent on the number of buttons used by
  3913.               INPTWIND.
  3914.                                               DEFAULT EXIT KEYS
  3915.               NO BUTTONS -------------------- ENTER and ESC
  3916.               ONE BUTTON < OK > ------------- ENTER
  3917.               TWO BUTTONS < OK >< CANCEL > -- ENTER AND ESC
  3918.  
  3919.               ENTER exits INPTWIND returning the edited text.  ENTER
  3920.               always exits all input windows, even if INPUTEXIT$ defines
  3921.               new exit keys.  ESC always exits two button input windows.
  3922.               If INPUTEXIT$ defines new exit keys for input windows
  3923.               without buttons, ESC will not exit unless an "E" is
  3924.               included in INPUTEXIT$.   If ESC is not an exit key the
  3925.               field's text is returned to it's pre-edited state and
  3926.               INPTWIND is not exited if ESC is pressed.  If ESC is an
  3927.               exit key, and it is pressed, INPTWIND is exited returning
  3928.               the EDITED text.  Using INPUTEXIT$ allows additional or
  3929.               different keys to exit INPTWIND.  INPUTEXIT$ may consist
  3930.               of any combination of the following characters.
  3931.  
  3932.               Character                                "Exit" key.
  3933.               "0"                                      F10
  3934.               "1","2","3","4","5","6","7","8","9"      F1 to F9
  3935.               "E"                                      ESC
  3936.               "U"                                      PGUP
  3937.               "D"                                      PGDN
  3938.  
  3939.               "VIEW" -- This causes the input window to be displayed and
  3940.               exited. The input window remains active.
  3941.  
  3942.               NOTE: THE FOLLOWING APPLY FOR NO BUTTON INPUT WINDOWS.
  3943.  
  3944.               "O" - The mouse is pressed outside of the input window.
  3945.               "T" - The TAB or SHIFT/TAB keys exit.
  3946.  
  3947.               NOTE: THE MOUSE "BELONGS" TO ROUTINE INPTWIND IF IT HAS
  3948.               BUTTONS.  INPTWIND CAN NOT BE EXITED IF THE LEFT MOUSE
  3949.               BUTTON IS PRESSED OUTSIDE OF THE FIELD.  TO USE INPUT
  3950.               FIELDS AND DETECT THE IF THE LEFT MOUSE BUTTON IS PRESSED
  3951.               OUTSIDE OF A FIELD ROUTINE "NO BUTTON INPUT WINDOWS" OR
  3952.               MULTINPT MUST BE USED.
  3953.  
  3954.  
  3955.  
  3956.                                        56
  3957.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.               Example: If INPUTEXIT$ = "02E" the F10, F2, ESC, and
  3968.               RETURN (ENTER) keys will exit INPTWIND.  see the
  3969.               description for routine INPTWIND ( argument RKEY% ).
  3970.  
  3971.               The following eliminates ENTER as exit key.
  3972.  
  3973.               DO
  3974.                 CALL B4INPT ("12","")         ' F1 / F2 = exit keys
  3975.                 CALL INPTWIND (........ RKEY% ' SEE ROUTINE INPTWIND
  3976.               LOOP WHILE RKEY% = 13           ' RKEY% = 13 for ENTER
  3977.               CALL RSTRINPT (1)               ' SEE ROUTINE RSTRINPT
  3978.  
  3979.               NOTE: IF THE ESC KEY IS NOT AN EXIT KEY AND INPUTEXIT$
  3980.               DOES NOT EQUAL "" THE ESC KEY WILL RETURN THE TEXT IN THE
  3981.               INPUT FIELD TO IT'S PRE-EDITED STATE. INPTWIND WILL NOT BE
  3982.               EXITED.  IF THE ESC KEY IS AN EXIT KEY INPTWIND IS EXITED
  3983.               RETURNING THE EDITED TEXT, WHEN ESC IS PRESSED.
  3984.  
  3985.                            RESTRICT$ is the field's restrict string. It
  3986.               holds the allowable characters which can be entered in the
  3987.               input field for a subsequent call to INPTWIND.  RESTRICT$
  3988.               IS IGNORED IF THE FIELD IS NOT AN ALPHA/NUMERIC FIELD.
  3989.               Only use RESTRICT$ if necessary.  For example if RESTRICT$
  3990.               = "1234567890()-" only the  characters included in a phone
  3991.               number can be entered in the field. If RESTRICT$ = "" for
  3992.               an alpha/numeric field all valid alpha/numeric characters
  3993.               may be entered in the field.
  3994.  
  3995.  
  3996.          4.02 INPTWIND ( P$, CODE$, TR%, LC%, WD%, WATTR%, FATTR%,
  3997.                          RTRN$, RKEY%, BUT%, BRDR%)
  3998.               See: Example - Input window
  3999.  
  4000.               NOTE1: PLACE THE ABOVE CALL TO INPTWIND ON ONE LINE IN THE
  4001.               QB/QBX ENVIRONMENT.
  4002.  
  4003.               NOTE2: ROUTINES INPTINIT AND SETWIND MUST BE CALLED AT LEAST
  4004.               ONCE IN ANY PROGRAM PRIOR TO CALLING THIS ROUTINE.
  4005.  
  4006.               NOTE3: WHEN AN INPUT WINDOW ( OR LINE ) IS MADE IT BECOMES
  4007.               THE ACTIVE INPUT WINDOW UNTIL IT IS DEACTIVATED BY A CALL
  4008.               TO ROUTINE RSTRINPT.  ON ENTRY THIS ROUTINE WILL MAKE A
  4009.               NEW INPUT WINDOW IF THERE IS NO ACTIVE INPUT WINDOW.  IF
  4010.               THERE IS AN ACTIVE INPUT WINDOW THIS ROUTINE SIMPLY RE-
  4011.               ENTERS IT.  A NEW INPUT WINDOW IS NOT MADE.  AN
  4012.               UNDERSTANDING OF ROUTINE RSTRINPT IS NECESSARY TO FULLY
  4013.               UNDERSTAND THIS ROUTINE.
  4014.  
  4015.               Description: On entry this routine will do one of the
  4016.               following.
  4017.  
  4018.               1. IF THERE IS NO ACTIVE INPUT WINDOW this routine makes
  4019.  
  4020.  
  4021.  
  4022.                                        57
  4023.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.                  an input field, which may optionally be windowed. The
  4034.                  area under the field or window is automatically saved.
  4035.                  The input window becomes the active input window.
  4036.                  The area under the window ( or line ) can be restored
  4037.                  after exiting INPTWIND by calling routine RSTRINPT.
  4038.                  RSTRINPT also deactivates the active input window.
  4039.  
  4040.               2. IF THERE IS AN ACTIVE INPUT WINDOW calling INPTWIND re-
  4041.                  enters it.  Arguments for top row (TR%), left column
  4042.                  (LC%), field width (WD%) and color (ATTR%) are ignored.
  4043.                  A new input window is NOT made.  The active input
  4044.                  window ( from a previous call to INPTWIND ) is used and
  4045.                  MUST be intact.  The following outlines the suggested
  4046.                  use for routines INPTWIND and RSTRINPT.
  4047.  
  4048.                  A.  Call INPTWIND.  Enter data and exit.
  4049.  
  4050.                  B.  Check the data.
  4051.  
  4052.                  C.  If the data is good proceed to step D.  If the data
  4053.                      is not good go back to step A.  As RSTRINPT has not
  4054.                      been called the input window is still active.  A
  4055.                      new input window will not be made.  The existing
  4056.                      active input window is simply re-entered.
  4057.  
  4058.                  D.  Call RSTRINPT.  The active input window made in
  4059.                      step A is deactivated by RSTRINPT.  The display
  4060.                      area covered by the input window may optionally be
  4061.                      restored.  The next call to INPTWIND will make a
  4062.                      new input window as an active input window will not
  4063.                      exist.
  4064.  
  4065.               IF AN ACTIVE INPUT WINDOW UNKNOWINGLY EXISTS ON ENTRY TO
  4066.               INPTWIND THE ACTIVE INPUT FIELD WILL BE DISPLAYED.  THE
  4067.               INPUT WINDOW WILL NOT BE DISPLAYED.  THE LOCATION OF THE
  4068.               FIELD WILL BE THE LOCATION SET BY THE ACTIVE INPUT WINDOW.
  4069.               THE COORDINATES IN THE CALL TO INPTWIND ARE IGNORED.  IF
  4070.               AN INPUT FIELD IS PLACED AT AN UNEXPECTED SCREEN LOCATION
  4071.               ON A CALL TO INPTWIND AN ACTIVE INPUT WINDOW PROBABLY
  4072.               EXISTS WHEN IT IS NOT EXPECTED TO EXIST.
  4073.  
  4074.               Arguments:   P$ is the message ( prompt ) which will be
  4075.               printed to the left of the input field or in the title
  4076.               box of the window, if one is specified.  If P$ is
  4077.               preceded by a "@" it will be centered in the title box.
  4078.  
  4079.                            CODE$ sets the type of input field and may
  4080.               equal the following.
  4081.  
  4082.               "A"  ------   Alpha/numeric.  All standard keys are active.
  4083.               "U"  ------   Alpha/numeric.  Upper case.
  4084.               "L"  ------   Alpha/numeric.  Lower case.
  4085.  
  4086.  
  4087.  
  4088.                                        58
  4089.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.               "D"  ------   Date.  A date field it can not be exited
  4100.                             unless the date is valid or the field is
  4101.                             blank.  The number keys are active.
  4102.                             Depending on the date format specified in
  4103.                             the call to INPTINPT, the ".", "/" or "-"
  4104.                             key will be active also.  Valid dates range
  4105.                             from 01/01/1901 to 12/31/2099, if the width
  4106.                             of the date field is 10, or 01/01/01 to
  4107.                             12/31/99 if the width of the date field is
  4108.                             8.  SEE DESCRIPTION FOR DATEFORMAT% IN
  4109.                             ROUTINE "INPTINIT".
  4110.  
  4111.               "P0" or "0" - Numeric. The value of the string desig-
  4112.               "P1" or "1"   nates the number of decimal places that
  4113.               "P2" or "2"   will be returned, even if more or less are
  4114.               "P3" or "3"   entered.   The field can not be exited
  4115.               "P4" or "4"   unless the number, fixed to the specified
  4116.               "P5" or "5"   number of decimal places will fit in the
  4117.               "P6" or "6"   the field, or the field is blank.  The
  4118.                             number keys and minus ("-") sign are active.
  4119.                             If the number of decimal places is not zero
  4120.                             the decimal designator ("." or ",") is
  4121.                             active also.  The minus sign will only print
  4122.                             in the first position of the field.  If a
  4123.                             decimal point is in the field another one
  4124.                             can not be entered until the previous one is
  4125.                             deleted.
  4126.  
  4127.               "PR" or "R" - Real number.  All numeric keys, the minus
  4128.                             sign ("-"), and decimal designator are
  4129.                             active.  The same rules apply as for 0 - 6
  4130.                             decimal place numbers.  The number is not
  4131.                             fixed to a specified number of decimal
  4132.                             places, however.
  4133.  
  4134.               NOTE: A NUMERIC FIELD WILL BE PADDED WITH LEADING ZEROS
  4135.               IF CODE$ CONTAINS A "P".
  4136.  
  4137.               EXAMPLE:  CODE$ = "3P" --- This allows numeric input.  It
  4138.               will return the data expanded, or truncated to, 3 digits
  4139.               after the decimal point and padded with leading zeros.
  4140.  
  4141.                             TR% is the top row of the field or window.
  4142.               If a window is designated, TR% must be set to allow the
  4143.               entire input window fit on the display or an error will be
  4144.               reported.  Setting TR% to 100 centers the field, or
  4145.               window, top to bottom on the display.
  4146.  
  4147.                            LC% is the left column.  If a window is
  4148.               designated, LC% must equal 1 to 76 . With no window LC%
  4149.               must equal 1 to 79 If LC% = 100 the field, or window, is
  4150.               centered left to right.  If LC% is set so the input field
  4151.  
  4152.  
  4153.  
  4154.                                        59
  4155.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.               with a window, if specified, or with a prompt, if
  4166.               specified, will not fit on the screen an error will be
  4167.               reported.
  4168.                            WD% is the field's width.  A date field must
  4169.               have WD%=10 or WD%=8.  A numeric field requires WD% to
  4170.               be from the number of ( decimal places + 1 ) to 15.
  4171.               For an alpha/numeric field WD% can range from 1 to 79
  4172.               ( less than 79 if windowed ).
  4173.  
  4174.                            WATTR% is the window's and prompts color.
  4175.               SEE THE COLOR ATTRIBUTE CHART IN THE APPENDIX.
  4176.  
  4177.                            FATTR% is the input field's color
  4178.               SEE THE COLOR ATTRIBUTE CHART IN THE APPENDIX.
  4179.  
  4180.                            RTRN$ is the string passed to, and returned
  4181.               from the input field.  A numeric string can be converted
  4182.               to a number by using the VAL function.
  4183.  
  4184.               EXAMPLE:  IF RTRN$= "123.123" IT CAN BE CONVERTED TO A
  4185.               NUMBER (A) WITH THE STATEMENT:
  4186.  
  4187.                            A = VAL(RTRN$)
  4188.                            A now equals 123.123
  4189.  
  4190.                            RKEY% is returned by INPTWIND.  RKEY%
  4191.               represents the key used to exit INPTWIND and is restricted
  4192.               to those keys specified in the call to B4INPT ( argument
  4193.               INPUTEXIT$ ).  RKEY% may equal the following
  4194.  
  4195.               RKEY%                     KEY WHICH EXITED INPTWIND
  4196.  
  4197.               0 -- RKEY% will equal 0 if the argument INPUTEXIT$ in
  4198.                    routine B4INPT = "VIEW"
  4199.  
  4200.               1 to 10                   F1 to F10
  4201.               11                        PGUP
  4202.               12                        PGDN
  4203.               13                        ENTER or the < OK > BUTTON
  4204.               27                        ESC or the < CANCEL BUTTON >
  4205.  
  4206.               NOTE THE FOLLOWING APPLIES TO NO BUTTON INPUT WINDOWS
  4207.  
  4208.               14                        SHIFT/TAB
  4209.               15                        TAB
  4210.  
  4211.                            BUT% allows < OK > and < CANCEL > buttons for
  4212.               the input window.  Buttons are selected by moving the
  4213.               cursor to the button using the tab or shift tab keys. If
  4214.               ENTER or the SPACE BAR is pressed and the cursor is on a
  4215.               button, the button is selected.  If the mouse is released
  4216.               with the mouse cursor over a button, the button is
  4217.  
  4218.  
  4219.  
  4220.                                        60
  4221.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.               selected.  If BUT% = 1 the < OK > button is displayed.  If
  4232.               BUT% = 2 the < OK > and < CANCEL > buttons are displayed.
  4233.               Selecting the < OK > button simulates pressing the ENTER
  4234.               key on a selection (RKEY% = 13).  Selecting the < CANCEL >
  4235.               button simulates pressing ESC (RKEY% = 27).  IF BUT% = 1
  4236.               the ESC key will not exit unless an "E" is included in
  4237.               routine B4INPT's argument INPUTEXIT$.  Using buttons
  4238.               affects the length ( number of rows ) of the input window
  4239.               as follows.
  4240.  
  4241.                           ( ----------- INPUT WINDOW TYPE ----------- )
  4242.  
  4243.                           UN-WINDOWED      --------- WINDOWED ---------
  4244.               BUTTONS     SINGLE LINE      W/TITLEBOX  WITHOUT TITLEBOX
  4245.  
  4246.                  0        1 ROW             5 ROWS       3 ROWS
  4247.                  1 or 2   2 ROWS            9 ROWS       7 ROWS
  4248.  
  4249.               NOTE: IF A WINDOW SHADOW IS SPECIFIED FOR WINDOWED INPUT
  4250.               FIELDS, THE NUMBER OF ROWS IS INCREASED BY ONE.
  4251.  
  4252.                            BRDR% is the input window's border. ( SEE
  4253.               THE BORDER DESIGNATION CHART ). If BRDR% = 0 and BUT% = 0
  4254.               a single line input field ( no window ) is generated.  If
  4255.               BRDR% produces a title box window, the prompt (P$) is
  4256.               printed in the title box.
  4257.  
  4258.  
  4259.          4.03 RSTRINPT ( RESTOREFLAG% )
  4260.               See: Example - Input window
  4261.  
  4262.               Description: Deactivates the active input window generated
  4263.               by a call to routine INPTWIND.  Optionally restores the
  4264.               display area under the input window.  After a call to
  4265.               INPTWIND an active input window exists.  Subsequent calls
  4266.               to INPTWIND behave differently if, on entry, an active
  4267.               input window exists.
  4268.  
  4269.               Argument:    RESTOREFLAG% must equal 1 to restore the
  4270.               display area ( saved by routine INPTWIND ) under the
  4271.               active input window.  If RESTOREFLAG% equals 0 the
  4272.               area under the active input window is not restored to the
  4273.               display.  REGARDLESS OF THE VALUE OF RESTOREFLAG% ALL
  4274.               CALLS TO RSTRINPT DEACTIVATE THE ACTIVE INPUT WINDOW.
  4275.  
  4276.               EXAMPLES:
  4277.  
  4278.               1. CALL RSTRINPT (1)  'DEACTIVATES ACTIVE INPUT WINDOW
  4279.                                     'AND RESTORES DISPLAY AREA UNDER IT.
  4280.  
  4281.               2. CALL RSTRINPT (0)  'DEACTIVATES ACTIVE INPUT WINDOW.
  4282.  
  4283.  
  4284.  
  4285.  
  4286.                                        61
  4287.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.               NOTE1: IF AN INPUT WINDOW REMAINS ON THE DISPLAY AND IT IS
  4298.               NOT THE ACTIVE INPUT WINDOW, RSTRINPT CAN NOT RESTORE THE
  4299.               DISPLAY AREA UNDER IT.  RSTRINPT CAN ONLY RESTORE THE
  4300.               DISPLAY AREA UNDER THE ACTIVE INPUT WINDOW.
  4301.  
  4302.               NOTE2: THE ACTIVE INPUT WINDOW ( THE SAVED DISPLAY AREA )
  4303.               RESIDES IN WINDOW NUMBER 21.  FUNCTION WAVAIL% CAN
  4304.               DETERMINE IF AN INPUT WINDOW IS ACTIVE.
  4305.  
  4306.               EXAMPLE: IF WAVAIL%(21) = 0 ' An input window is active.
  4307.                        IF WAVAIL%(21) = 1 ' An input window is not
  4308.                                           ' active.
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.                                        62
  4353.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.          -----------------------------------------------------------------
  4364.          ' SAMPLE: Input window
  4365.          ' IT IS ASSUMED ROUTINE SETWIND HAS BEEN CALLED.
  4366.          ' BEFORE ANY CALLS TO INPTWIND, INPTINIT MUST BE CALLED.
  4367.  
  4368.          ' DATE FORMAT = "MM-DD-YYYY" OR "MM-DD-YY"
  4369.          ' DECIMAL DESIGNATOR IS A "." -- CURSOR ENTERS FIELD IN POS. 1
  4370.          ' FIELD BLANK ON FIRST KEY PRESSED. -- SOUND MADE FOR BAD KEY
  4371.          CALL INPTINIT ( 1, 1, 1, 1, 1 )
  4372.  
  4373.          '
  4374.          '
  4375.          DO
  4376.          ' NUMERIC INPUT - 0 DECIMAL PLACES.
  4377.          ' INPUT WINDOW CENTERED ROW AND COLUMN.
  4378.          ' FIELD WIDTH = 2.
  4379.          ' WINDOW = BLACK ON WHITE. FIELD = INTENSITY WHITE ON BLACK.
  4380.          ' WINDOWED WITHOUT A TITLE BOX - PROMPT TO LEFT OF INPUT FIELD.
  4381.          ' <OK> AND <CANCEL> BUTTONS
  4382.          ' THE FOLLOWING CALL TO INPTWIND MUST BE ON ONE LINE IN THE QB/QBX
  4383.          ' /VBDOS EDITOR.
  4384.          CALL INPTWIND ("Enter a number 1 to 50: ", "0", 100, 100, 2, 112,
  4385.                          15, RTRN$, RKEY%, 2, 1 )
  4386.  
  4387.          ' RKEY% REPRESENTS KEY USED TO EXIT INPTWIND .
  4388.          ' RTRN$ IS THE ENTERED TEXT.
  4389.  
  4390.          ' RKEY% = 27 IF ESC PRESSED OR < CANCEL > SELECTED
  4391.          IF RKEY% = 27 THEN PRINT "ESC PRESSED OR CANCEL SELECTED":END
  4392.  
  4393.          R% = VAL(RTRN$)
  4394.  
  4395.          ' WAS BAD INPUT. GO BACK TO INPTWIND.  AS RSTRINPT HAS NOT BEEN
  4396.          ' CALLED THE INPUT WINDOW REMAINS ACTIVE.  IT WILL NOT BE RE-
  4397.          ' PRINTED. IT IS RE-ENTERED ONLY.
  4398.  
  4399.          LOOP WHILE R% < 1 OR R% > 50                        ' BAD INPUT
  4400.  
  4401.          ' WAS GOOD INPUT - RSTRINPT DEACTIVATES ACTIVE INPUT WINDOW AND
  4402.          ' RESTORES DISPLAY AREA UNDER SAME.
  4403.          ' *** IF RSTRINPT IS NOT CALLED, ON THE NEXT CALL TO INPTWIND AN
  4404.          ' *** ACTIVE INPUT WINDOW WILL STILL EXIST.  INPTWIND WILL IGNORE
  4405.          ' *** VALUES FOR TOP ROW, LEFT COLUMN, WIDTH AND COLOR AND USE THE
  4406.          ' *** VALUES FROM THE ACTIVE INPUT WINDOW.  FORGETTING TO CALL
  4407.          ' *** RSTRINPT TO DEACTIVATE AN ACTIVE INPUT WINDOW MAY THEREFOR
  4408.          ' *** PRODUCE UNEXPECTED RESULTS.
  4409.  
  4410.          CALL RSTRINPT (1)
  4411.          LOCATE 1, 1
  4412.          PRINT RTRN$ +" WAS ENTERED!"
  4413.          END
  4414.          -----------------------------------------------------------------
  4415.  
  4416.  
  4417.  
  4418.                                        63
  4419.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.                           Multi-field Input Overview
  4430.  
  4431.          The following is an overview of the procedures required to
  4432.          generate a MULTI-FIELD input screen.  The procedures are
  4433.          listed in the order they must be used.
  4434.  
  4435.  
  4436.          1. Call routine INPTINIT.  This sets global variables for all
  4437.             input routines.  It is only necessary to call INPTINIT
  4438.             once in every program.
  4439.  
  4440.          2. Call routine SETINPT.  This sets the properties for an
  4441.             individual MULTI-FIELD input screen.  SETINPT must be
  4442.             called once for every MULTI-FIELD input screen.
  4443.  
  4444.          3. Call routine MAKEFIELD to define each field in the MULTI-
  4445.             FIELD input screen.
  4446.  
  4447.          4. Call routine MULTINPT to display the input fields and
  4448.             receive user input for an individual MULTI-FIELD input
  4449.             screen.  For repeated calls to MULTINPT for a predefined
  4450.             MULTI-FIELD input screen it is not necessary to repeat
  4451.             steps 1, 2, and 3.  Once a MULTI-FIELD input screen is
  4452.             defined it remains defined for subsequents calls to
  4453.             MULTINPT as long as a CLEAR statement has not been
  4454.             executed.
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.  
  4484.                                        64
  4485.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.          4.04 SETINPT ( SCRN%, DISPLEN%, EXIT$, HOTCOL% )
  4496.  
  4497.               Description: Defines a multi-field input screen, which will
  4498.               be utilized by a subsequent call to routine MULTINPT.
  4499.  
  4500.               Arguments:   SCRN% is the number of the screen being
  4501.               defined.  SCRN% may range from 1 to 10.
  4502.  
  4503.                            DISPLEN% is the length of the screen ( rows )
  4504.               which will be in effect when the multi-field input screen
  4505.               for the designated screen number is called.  DISPLEN% must
  4506.               equal 25, 43, or 50.  When MULTINPT for this input screen
  4507.               is called the current screen rows must equal those
  4508.               specified in the call to SETINPT for the same input screen
  4509.               or an error will be reported.
  4510.  
  4511.                           EXIT$ is a code for the keys, or mouse
  4512.               condition which will exit the multi-field input routine
  4513.               for the designated screen number.  EXIT$ may be any
  4514.               combination of "0123456789EUDO".  To make the function
  4515.               keys active place their number "1","2" etc in EXIT$.   A
  4516.               "0" ( zero ) represents the F10 key, a "D" the PGDN key ,
  4517.               a "U" the PGUP key and an "E" the ESC key.  The letter "O"
  4518.               in EXIT$ will cause routine MULTINPT to be exited if the
  4519.               left mouse button is pressed while the mouse cursor is NOT
  4520.               in a field.
  4521.  
  4522.               EXAMPLE: IF EXIT$ ="03U" THE F10, F3, OR PGUP KEYS WILL
  4523.               EXIT THE MULTI-FIELD INPUT ROUTINE ( MULTINPT ).
  4524.  
  4525.               NOTE:  If THE ESC KEY IS NOT USED AS AN EXIT KEY IT IS
  4526.               USED TO RETURN THE TEXT OF A FIELD IN MULTINPT TO IT'S
  4527.               PRE-EDITED STATE.  THIS FEATURE IS DISABLED WHEN ESC IS
  4528.               USED AS AN EXIT KEY    THE SPACE BAR CAN ALSO BE AN EXIT
  4529.               KEY FOR INDIVIDUAL FIELDS IN MULTINPT IF A FIELD IS A
  4530.               FIXED CHOICE FIELD.   SEE THE DESCRIPTION FOR ARGUMENT
  4531.               CODE% IN ROUTINE MAKEFIELD TO USE FIXED CHOICE FIELDS.
  4532.  
  4533.                            HOTCOL% sets the color of "key characters"
  4534.               for fields defined in subsequent calls to MAKEFIELD for
  4535.               the specified multi-field input screen.  Key characters
  4536.               may be used to move the cursor to a specific field if the
  4537.               key character for that field is pressed.  Although key
  4538.               characters may be used to move the cursor to an editable
  4539.               input field, key characters are ignored while in an
  4540.               editable field ( the characters are assumed to be input ).
  4541.               Editable input fields allow input.  "Fixed choice" fields
  4542.               which may be used as BUTTONS or for multiple choices are
  4543.               not editable.
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.                                        65
  4551.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.          4.05 MAKEFIELD ( SCRN%, FLD%, CODE%, TR%, LC%, WD% INACTIVEATTR%,
  4562.               ACTIVEATTR%,MOUSEATTR%,RES$,EXTO$,HOTPOS%,CURPOS%,BRACKET%)
  4563.  
  4564.               NOTE1: THE ABOVE CALL TO MAKEFIELD MUST BE ON ONE LINE IN THE
  4565.               QB/QBX ENVIRONMENT.
  4566.  
  4567.               NOTE2: ROUTINE SETINPT FOR THE DESIGNATED MULTI-FIELD SCREEN
  4568.               NUMBER ( SCRN% ) MUST BE CALLED PRIOR TO CALLING THIS ROUTINE.
  4569.  
  4570.               Description:  Makes input, fixed choice, or button fields
  4571.               for a multi-field input screen previously defined in call
  4572.               to routine SETINPT.  The fields will be used in a
  4573.               subsequent call to MULTINPT.
  4574.  
  4575.               Arguments:   SCRN% is the multi-input screen for which
  4576.               this routine is making a field.  The multi-input screen
  4577.               MUST have been previously defined by a call to routine
  4578.               SETINPT.
  4579.  
  4580.                            FLD% is the field number being made.  The
  4581.               order in which fields are made, determine the order of
  4582.               input.  Field number 2 can not be made unless field number
  4583.               one has been previously made.  If a field is made for a
  4584.               specified multi-input screen, and the field already
  4585.               exists, the existing field is replaced with the new one.
  4586.               FLD% may range from 1 to 150.
  4587.  
  4588.                            CODE% is the code for type of input field
  4589.               and can be set to any of the following.
  4590.  
  4591.               0 to 6 ----- The field is numeric with the indicated
  4592.                            number of decimal places.
  4593.  
  4594.               10 to 16 --- The field is numeric with padded zeros.
  4595.                            Subtract 10 to obtain the number of decimal
  4596.                            places.
  4597.  
  4598.               30 --------- The field is numeric. It is to be used for
  4599.                            real numbers.
  4600.  
  4601.               40 --------- The field is numeric and padded with leading
  4602.                            zeros.  It is to be used for real numbers.
  4603.  
  4604.               7 ---------- The field is alpha/numeric.
  4605.               8 ---------- The field is a date field.
  4606.               17 --------- The field is alpha/numeric. (upper case)
  4607.               27 --------- The field is alpha/numeric. (lower case)
  4608.  
  4609.               SEE ROUTINE "INPTWIND", ARGUMENT CODE$, FOR A DESCRIP-
  4610.               TION AND INPUT LIMITATIONS FOR FIELDS BASED ON THEIR
  4611.               DESIGNATION.
  4612.  
  4613.  
  4614.  
  4615.  
  4616.                                        66
  4617.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.               Adding 100 to CODE% makes the field protected.  A
  4628.               protected field will be displayed but can not be
  4629.               edited.   A protected field can not be an Auto-advance
  4630.               or Auto-exit field.  If a protected field is defined as
  4631.               an Auto-exit or Auto-advance field the definition is
  4632.               ignored and the field remains a protected field.
  4633.  
  4634.               Adding 1000 to CODE% makes the field an Auto-advance
  4635.               field.  When the cursor reaches the end of an Auto-
  4636.               advance field, via typing a character, it moves to the
  4637.               next field.  ( User defined order. )
  4638.  
  4639.               Adding 10000 to CODE% makes the field an "Auto-exit"
  4640.               field.   The multi-field input routine will be exited
  4641.               whenever the cursor is moved from an "Auto-exit" field.
  4642.  
  4643.               Adding 30000 to CODE% makes the field a "Fixed choice"
  4644.               field.  Multi-field input routine, MULTINPT, will be
  4645.               exited if the space bar is pressed on, or if the cursor
  4646.               is moved from a "fixed choice" field.  MULTINPT will also
  4647.               be exited if the mouse cursor is in a fixed choice field
  4648.               and the left mouse button is simultaneously released.
  4649.               This in makes the field an auto-exit field.  The
  4650.               description for the procedure MULTINPT describes the
  4651.               details of a "fixed choice" field.
  4652.  
  4653.               Fixed choice fields provide several opportunities.
  4654.  
  4655.               1. If a field is made a "fixed choice" field it may be
  4656.                  used as a "button field".  Routine MULTINPT is exited
  4657.                  when the SPACE BAR is pressed while the cursor is in
  4658.                  the field or when the left mouse button is released and
  4659.                  the mouse cursor is in the field.  This emulates
  4660.                  buttons.  EX: CODE%=30007
  4661.  
  4662.               2. If a field is made a "fixed choice" field and also
  4663.                  defined as protected ( CODE% = 30100 ) the field is a
  4664.                  "mouse only selectable field".  The cursor can not be
  4665.                  moved to a "mouse only selectable field" as it
  4666.                  protected ( 100 has been added to CODE% ). A "mouse
  4667.                  only selectable field" may appear as < F1 = EXIT >.
  4668.                  Routine MULTINPT will exit whenever the mouse cursor is
  4669.                  in it and the left mouse button is released.  If the
  4670.                  field appears as < F1 = EXIT > and F1 is an "exit key"
  4671.                  ( from routine SETINPT ) users without a mouse may exit
  4672.                  MULTINPT by pressing F1.  Users with a mouse may use
  4673.                  the mouse or press F1 to exit.  EX: CODE%=30100
  4674.  
  4675.               3. If a field is made a "fixed choice" field it may be
  4676.                  used for fixed choices.  If the space bar is pressed
  4677.                  while the system cursor is in the field, or if the left
  4678.                  mouse button is released while the mouse cursor is in
  4679.  
  4680.  
  4681.  
  4682.                                        67
  4683.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.                  the field routine MULTINPT is exited.  The field may be
  4694.                  updated with a different choice ( text ) and updated.
  4695.                  Routine MULTINPT is then re-entered.  EX: CODE%=30007
  4696.  
  4697.               EXAMPLE: If CODE%= 11017 THEN CODE% = 10000+1000+17.
  4698.               THE FIELD IS ALPHA/NUMERIC ( UPPER CASE ), AUTO-ADVANCE
  4699.               AND "AUTO-EXIT".
  4700.  
  4701.                ** SEE THE MULTI-FIELD CODE CHART IN THE APPENDIX.**
  4702.  
  4703.                            TR%, LC%, and WD% are the same as in INPTWIND.
  4704.               They represent the field's row position, column position
  4705.               and width.  As in routine INPTWIND the width is dependent
  4706.               on the field type. ( SEE ROUTINE INPTWIND )
  4707.  
  4708.                            INACTIVEATTR% is the field's color when the
  4709.               field is inactive. The field is inactive when the system
  4710.               cursor is NOT in it.
  4711.  
  4712.                            ACTIVEATTR% is the field's color when the
  4713.               field is active.  The field is active when the system
  4714.               cursor is in it.
  4715.  
  4716.                            MOUSEATTR% is the field's color when the
  4717.               field is occupied by the mouse cursor and the left mouse
  4718.               button is pressed.  Usually "button" and "mouse
  4719.               selectable" fields require a different color ( from
  4720.               INACTIVEATTR% ) in MOUSEATTR%.
  4721.  
  4722.                            RES$ defines the allowable characters
  4723.               in a restricted field.  If the field is not set to
  4724.               alpha/numeric by CODE%, RES$ is ignored.  Setting RES$ to
  4725.               "YN" and CODE% TO 17 ( UPPER CASE ) allows the field to
  4726.               respond to Y,y,N or n.  If CODE% = 7 ( UPPER AND LOWER
  4727.               CASE ) and RES$ ="YN" the field is restricted to Y or N.
  4728.               IF CODE%=27 ( LOWER CASE ) and RES$ ="YN" the field will
  4729.               not allow any characters.  If RES$ = "" the field is not
  4730.               restricted and will respond to characters predicated on
  4731.               the value of CODE%.
  4732.  
  4733.               NOTE: IT IS ONLY NECESSARY TO USE RES$ FOR NON-STANDARD
  4734.               FIELDS.  SET RES$ TO "" FOR NORMAL ALPHA/NUMERIC FIELDS
  4735.               OR THE RESULT WILL BE EXTRA CODE AND MEMORY USAGE.  IF
  4736.               THE FIELD IS STANDARD ALPHA/NUMERIC MAKE CODE% = 7 AND
  4737.               RES$ = "".  THIS WILL ALLOW UPPER/LOWER CASE ALPHA/NUM-
  4738.               ERIC INPUT.
  4739.  
  4740.  
  4741.                      EXAMPLE: RES$ = "0123456789-( )"
  4742.  
  4743.                      THIS RESTRICTS INPUT TO CHARACTERS INCLUDED IN
  4744.                      A PHONE NUMBER WITH THE AREA CODE.
  4745.  
  4746.  
  4747.  
  4748.                                        68
  4749.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.                            EXTO$ sets the "exit to character" for the
  4760.               field.  An "exit to character" defines a key, when
  4761.               pressed, which will exit to the field.  If EXTO$ = "A" for
  4762.               a field and an "A" is pressed while the cursor is in a
  4763.               non-editable ( fixed choice ) field, routine MULTINPT is
  4764.               exited.  MULTINPT's argument ( TOFLD% ) which points to
  4765.               the next active field will point to the field number with
  4766.               EXTO$ = "A".  Make EXTO$ ="" if "exit to characters" are
  4767.               not used.
  4768.  
  4769.               NOTE: IF MORE THAN ONE FIELD HAS THE SAME "EXIT TO
  4770.               CHARACTER" ( EXTO$ ) ONLY THE FIRST FIELD IS FOUND. DO NOT
  4771.               USE THE SAME "EXIT TO CHARACTER" FOR MORE THAN ONE FIELD.
  4772.  
  4773.                            HOTPOS% is the position of the character of
  4774.               text in the field which will assume the "key character"
  4775.               color set by routine SETINPT.  This "key character" may be
  4776.               used as the "exit to character".  If HOTPOS% = 0 or
  4777.               HOTPOS% is greater than the strings length a differently
  4778.               colored "key character" will not be displayed. HOTPOS%
  4779.               only applies to "fixed choice fields".
  4780.  
  4781.                            CURPOS% determines the position the cursor
  4782.               will occupy in fixed choice fields when the field is
  4783.               active.  If CURPOS% = 0 or CURPOS% is greater than the
  4784.               fields width the cursor will go to the position as
  4785.               specified by the call to INPTINIT.
  4786.  
  4787.                            BRACKET% is used to set the first and last
  4788.               characters of text in the field to the color, BRACKETATTR%
  4789.               as defined by routine SETWIND.  It is only appropriate for
  4790.               "fixed choice" fields.  If BRACKET% = 1 the first and last
  4791.               character of text in the field assume the BRACKETATTR%
  4792.               color defined in routine SETINPT.  This is only true when
  4793.               the field is the active field. This is useful for button
  4794.               field such as "< OK >".
  4795.  
  4796.  
  4797.          4.06 MULTINPT ( SCRN%, TOFLD%, OPT$, FROMFLD%, RKEY%, RTRN$() SEL%)
  4798.  
  4799.               NOTE1: ROUTINE INPTINIT MUST BE CALLED AT LEAST ONCE IN ANY
  4800.               PROGRAM PRIOR TO CALLING THIS ROUTINE.
  4801.  
  4802.               NOTE2: ROUTINE SETINPT ( FOR THIS SCREEN - SCRN%) MUST BE
  4803.               CALLED SOMETIME IN THE PROGRAM PRIOR TO THIS CALL.
  4804.  
  4805.               Description: Displays input fields defined in a previous
  4806.               call to SETINPT.  Fields are available for full editing
  4807.               Returns edited strings to the calling program.
  4808.  
  4809.               Arguments:   SCRN% is the number ( 1 to 10 ) of the
  4810.               multi-field input screen to display.
  4811.  
  4812.  
  4813.  
  4814.                                        69
  4815.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.                            TOFLD% serves two purposes.
  4826.  
  4827.               1. When entering MULTINPT, TOFLD% determines which field
  4828.                  will be the active field ( the one with the cursor ).
  4829.                  It may range from one to the last field as designated
  4830.                  by SETINPT.  On entry to MULTINPT the field represented
  4831.                  by TOFLD% is always updated.
  4832.  
  4833.               2. When exiting MULTINPT, TOFLD% points to the next field
  4834.                  the cursor would normally occupy.  If a field is an
  4835.                  auto-exit field and the down arrow is pressed, MULTINPT
  4836.                  will be exited.  TOFLD% will point to the field the
  4837.                  cursor would normally occupy via the down arrow being
  4838.                  pressed.  This enables MULTINPT to be exited by an
  4839.                  auto-exit field and re-entered at the correct field.
  4840.                  If the field is a fixed choice field and the space bar
  4841.                  is pressed, TOFLD% will point to the fixed choice field
  4842.                  This is the field the cursor occupied before MULTINPT
  4843.                  was exited.
  4844.  
  4845.                            OPT$ specifies properties of the multi-field
  4846.               input screen.  OPT$ may equal the following.
  4847.  
  4848.               "VIEW"  ------ On entry MULTINPT will fill a single field
  4849.                              or all fields with their respective data.
  4850.                              MULTINPT is then exited.  This is useful
  4851.                              for viewing a multi-field screen and
  4852.                              exiting routine MULTINPT.
  4853.  
  4854.               "U" ---------- This changes the normal field to field
  4855.                              movement of the cursor when using the TAB,
  4856.                              SHIFT TAB, RIGHT ARROW, AND LEFT ARROW
  4857.                              keys to user defined order.  User defined
  4858.                              order is the same order as fields are
  4859.                              defined in routine MAKEFIELD. The TAB and
  4860.                              RIGHT ARROW keys follow user defined order
  4861.                              ( same as ENTER or DOWN ARROW ).  The SHIFT
  4862.                              TAB and LEFT ARROW keys follow reverse user
  4863.                              defined order ( same as UP ARROW ).
  4864.  
  4865.                   ---------- All other string values for OPT$ have no
  4866.                              effect on the multi-field input screen.
  4867.  
  4868.                            FROMFLD% also serves two purposes.
  4869.  
  4870.               1. If FROMFLD% is set to zero, MULTINPT, when entered,
  4871.                  will update all fields.  If FROMFLD%% is set from one
  4872.                  to the last field number only the specified field is
  4873.                  updated.  This allows quick exiting from, and re-
  4874.                  entering of MULTINPT.
  4875.  
  4876.  
  4877.  
  4878.  
  4879.  
  4880.                                        70
  4881.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.               2. When MULTINPT is exited FROMFLD% is set to the last
  4892.                  field that was available for input prior to the exit.
  4893.  
  4894.                  NOTE:  ALTHOUGH THE MOUSE MAY MOVE THE INPUT CURSOR TO
  4895.                  SEVERAL FIELDS PRIOR TO RELEASING THE LEFT MOUSE
  4896.                  BUTTON, FROMFLD% POINTS TO THE LAST FIELD AVAILABLE FOR
  4897.                  INPUT.  IT DOES NOT POINT TO ANY OF THE FIELDS THE
  4898.                  INPUT CURSOR MAY HAVE OCCUPIED WHILE THE LEFT MOUSE
  4899.                  BUTTON WAS PRESSED.
  4900.  
  4901.               It is important to distinguish FROMFLD% from argument
  4902.               TOFLD% which points to the NEXT field the cursor would
  4903.               normally occupy.
  4904.  
  4905.                             RKEY% returns a value designation for the
  4906.               key or feature which caused MULTINPT to be exited or auto-
  4907.               exited.  MULTINPT exits when a valid exit key (specified
  4908.               in the call to SETINPT for the multi-field input screen)
  4909.               is pressed.  MULTINPT is auto-exited whenever the cursor
  4910.               is moved out of an auto-exit  field, or fixed choice
  4911.               field.  MULTINPT is also auto-exited when the SPACE BAR is
  4912.               pressed with the cursor in a fixed choice field.  RKEY%
  4913.               may equal:
  4914.  
  4915.               1 to 10  Exit keys, F1 to F10, caused MULTINPT to be
  4916.                        exited.  MULTINPT was not exited by the auto-exit
  4917.                        feature although the field the cursor occupied on
  4918.                        exit may have been an auto-exit field.
  4919.  
  4920.               11 ----- Exit key, PGUP, caused MULTINPT to be exited.
  4921.                        MULTINPT was not exited by the auto-exit feature
  4922.                        although the field the cursor occupied on exit
  4923.                        may have been an auto-exit field.
  4924.  
  4925.               12 ----- Exit key, PGDN, caused MULTINPT to be exited.
  4926.                        MULTINPT was not exited by the auto-exit feature
  4927.                        although the field the cursor occupied on exit
  4928.                        may have been an auto-exit field.
  4929.  
  4930.               13 ----- The RETURN key caused MULTINPT to be auto-exited.
  4931.                        The field must have been an auto-exit field.
  4932.  
  4933.               14 ----- SHIFT TAB or the LEFT ARROW caused MULTINPT to be
  4934.                        auto-exited.  The field must have been an
  4935.                        auto-exit field.
  4936.  
  4937.               15 ----- The TAB key or RIGHT ARROW caused MULTINPT to be
  4938.                        auto-exited.  The field must have been an auto-
  4939.                        exit field.
  4940.  
  4941.               16 ----- The UP ARROW caused MULTINPT to be auto-exited.
  4942.                        The field must have been an auto-exit field.
  4943.  
  4944.  
  4945.  
  4946.                                        71
  4947.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.               17 ----- The CONTROL-HOME combination caused MULTINPT to
  4958.                        be auto-exited.  The field must have been an
  4959.                        auto-exit field.
  4960.  
  4961.               18 ----- The CONTROL-END combination caused MULTINPT to be
  4962.                        auto-exited.  The field must have been an auto-
  4963.                        exit field.
  4964.  
  4965.               19 ----- The DOWN ARROW caused MULTINPT to be auto-exited.
  4966.                        The field must have been an auto-exit field.
  4967.  
  4968.               20 ----- The AUTO-ADVANCE feature caused MULTINPT to be
  4969.                        auto-exited.  The field must also be an auto-exit
  4970.                        field.  This occurs when the text fills a auto-
  4971.                        advance, auto-exit, field.
  4972.  
  4973.               27 ----- Exit key, ESC, caused MULTINPT to be exited.
  4974.                        MULTINPT was not exited by the auto-exit feature
  4975.                        although field the cursor occupied on exit may
  4976.                        have been an auto-exit field.
  4977.  
  4978.               32 ----- The SPACE BAR caused MULTINPT to be auto-exited.
  4979.                        The field occupied by the cursor on exit must have
  4980.                        been a fixed choice field which is always an auto-
  4981.                        exit field.
  4982.  
  4983.               50 ----- The cursor was in a fixed-choice field ( code =
  4984.                        3xxxx ) and a field "exit to character" was
  4985.                        pressed.  ( SEE ARGUMENT EXTO$ FOR ROUTINE
  4986.                        MAKEFIELD.)
  4987.  
  4988.               100 ---- The mouse selected a new field.  THE MOUSE WAS
  4989.                        RELEASED IN THE NEW FIELD.  The last field that
  4990.                        was available for input was an auto-exit field.
  4991.  
  4992.               200 ---- The mouse was PRESSED outside of a field. RKEY%
  4993.                        can only equal 200 if argument EXIT$ from
  4994.                        routine SETINPT specified an exit when the mouse
  4995.                        is pressed out of a field.
  4996.  
  4997.               300 ---- The mouse selected a new field AND the mouse was
  4998.                        RELEASED outside of the field.  The last field
  4999.                        available for input was an auto-exit field.
  5000.  
  5001.                            RTRN$() is a string array which holds the
  5002.               data to be edited.  Elements of RTRN$() will be
  5003.               displayed in the appropriate fields.  RTRN$(1) will be
  5004.               displayed in field 1 and so on.  Make sure there is not
  5005.               a RTRN$(0) as it will not be displayed.  If a field is
  5006.               numeric, the number to be placed in it must be converted
  5007.               to a string.  Convert the number (A) to a string as
  5008.               follows:   RTRN$(2) = STR$(A)
  5009.  
  5010.  
  5011.  
  5012.                                        72
  5013.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.               When MULTINPT is exited RTRN$() holds the data in it's
  5024.               edited state.
  5025.  
  5026.               On entering MULTINPT, if the field is designated as
  5027.               alpha/numeric and the string will not fit in the field
  5028.               it will be truncated to fit.  If the field is numeric
  5029.               and a number formatted to the correct number of decimal
  5030.               places will not fit in the field, "*"'s will be printed.
  5031.               This will not pose a problem if RTRN$() is initialized
  5032.               via MULTINPT, as MULTINPT will not allow the user to
  5033.               input data longer than the field's width.  If a numeric
  5034.               field is entered with an alpha string the string will
  5035.               print in the field. It is the programmer's responsibility
  5036.               to assure numeric fields contain numeric strings.  IF
  5037.               A FIELD IS NUMERIC WITH 4 DECIMAL PLACES SETTING THE
  5038.               FIELD TO EQUAL "DOG", WILL RESULT IN DOG.0000 BEING
  5039.               DISPLAYED!
  5040.  
  5041.               Use caution if a field is a result of calculation, as
  5042.               the result may be in exponential format.  EXAMPLE:
  5043.  
  5044.                      A = 1       B = 14      C = A/B
  5045.  
  5046.               STR$(C) = "7.142857E-02".  If the field is numeric with
  5047.               four decimal places and set to equal STR$(C) it will
  5048.               print as 7.1428, and not as .0714.
  5049.  
  5050.               To following routine corrects numbers in expoential form
  5051.               for both large and small numbers.  A$ is the numeric
  5052.               string to be displayed in a field.
  5053.  
  5054.               IF INSTR(3, A$, "+") THEN A$ = "9999999999999999"
  5055.               REM: THE NUMBER WAS TOO LARGE ( EX: 2.2D+22 ).  SET TO
  5056.               REM: "9999999999999999" AND "*"'s WILL BE DISPLAYED.
  5057.  
  5058.               IF INSTR(3, A$, "-") THEN
  5059.                  A# = VAL(A$): A# = A# + SGN(A#): A$ = STR$(A#)
  5060.                  IF ABS(A#) > 1 THEN
  5061.                     A$ = MID$(A$, INSTR(A$, "."))
  5062.                     IF A# < 1 THEN A$ = "-" + A$
  5063.                  ELSE
  5064.                     A$="0"
  5065.                  END IF
  5066.               END IF
  5067.               REM: THE NUMBER WAS TOO SMALL. IF A$ = "3.33D-4",
  5068.               REM: A$ WILL NOW = ".000333"
  5069.  
  5070.                            SEL% returns a value if the exit from routine
  5071.               MULTINPT was caused by the mouse selecting a "mouse only
  5072.               selectable field".  SEL% will equal the field number of
  5073.               the "mouse only selectable field" selected by the mouse
  5074.               and argument RKEY% will equal 100 indicating the left
  5075.  
  5076.  
  5077.  
  5078.                                        73
  5079.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.               mouse button was released in the field.  When MULTINPT
  5090.               is exited by a "mouse only selectable field" argument
  5091.               TOFLD% points to the last field occupied by the system
  5092.               cursor. "Mouse only selectable fields" can not be occupied
  5093.               by the system cursor.
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101.  
  5102.  
  5103.  
  5104.  
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.  
  5119.  
  5120.  
  5121.  
  5122.  
  5123.  
  5124.  
  5125.  
  5126.  
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.                                        74
  5145.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.        ---------------------------------------------------------------
  5156.              FIELD EDITING FEATURES FOR "MULTINPT" AND "INPTWIND"
  5157.                   ( * = AVAILABLE FOR "MULTINPT" ONLY. )
  5158.        ---------------------------------------------------------------
  5159.        KEY             FUNCTION
  5160.  
  5161.        SPACE BAR       ERASES FIELD - IF IT IS THE FIRST KEY PRESSED.
  5162.  
  5163.        *UP ARROW       MOVES THE CURSOR FROM FIELD TO FIELD AS DETER-
  5164.        *DOWN ARROW     MINED BY THE ORDER DEFINED IN "SETINPT."  THE
  5165.                        DOWN ARROW MOVES THE CURSOR IN ASCENDING FIELD
  5166.                        ORDER. THE UP ARROW MOVES IT IN DESCENDING
  5167.                        FIELD ORDER.  PROTECTED FIELDS ARE SKIPPED.
  5168.  
  5169.        *CTRL END       MOVES THE CURSOR TO THE FIRST OR LAST FIELD AS
  5170.        *CTRL HOME      DESIGNATED BY THE ORDER DEFINED IN "SETINPT".
  5171.  
  5172.        *TAB            MOVES THE CURSOR FROM FIELD TO FIELD HORIZONT-
  5173.        *SHIFT TAB      ALLY. TAB MOVES LEFT TO RIGHT, SHIFT TAB MOVES
  5174.                        RIGHT TO LEFT. PROTECTED FIELDS ARE SKIPPED.
  5175.  
  5176.        CTRL E          ERASES THE FIELD.
  5177.  
  5178.        ESC             RETURNS A FIELD TO IT'S PRE-EDITED STATE OR
  5179.                        EXITS "MULTINPT".  EXITS "INPTWIND" WITH PRE-
  5180.                        EDITED STRING.  ESC EXITS "MULTINPT" IF THE
  5181.                        ESC KEY WAS DESIGNATED AS AND EXIT KEY BY
  5182.                        "SETINPT" ( FIELD NOT RESTORED TO PRE-EDITED
  5183.                        STATE ).
  5184.  
  5185.        ENTER           EXITS "INPTWIND".  SAME AS DOWN ARROW FOR
  5186.        RETURN          "MULTINPT".
  5187.  
  5188.        END             MOVES THE CURSOR TO THE FIRST OR LAST POSITION
  5189.        HOME            OF TEXT WITHIN A FIELD.
  5190.  
  5191.        BACKSPACE       DELETES THE CHARACTER TO THE LEFT OF CURSOR.
  5192.  
  5193.        DELETE          DELETES THE CHARACTER UNDER THE CURSOR AND
  5194.                        SHIFTS CHARACTERS LEFT.
  5195.  
  5196.        INSERT          TOGGLES FROM INSERT TO OVERSTRIKE MODE. IF MODE
  5197.                        IS OVERSTRIKE THE CURSOR IS LARGE. INSERT MODE
  5198.                        IS THE DEFAULT EVERY TIME A FIELD IS ENTERED.
  5199.  
  5200.        RIGHT ARROW     MOVES THE CURSOR LEFT OR RIGHT.  ACTS THE SAME
  5201.        LEFT ARROW      AS TAB OR SHIFT TAB FOR "MULTINPT" IF THE
  5202.                        CURSOR IN POSITION 1 AND THE LEFT ARROW IS
  5203.                        PRESSED, OR THE CURSOR IS AT THE END OF THE
  5204.                        TEXT AND THE RIGHT ARROW IS PRESSED.
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.                                        75
  5211.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.  
  5220.  
  5221.          4.07 UPDATEFIELD ( SCRN%, FLD%, TEXT$ )
  5222.  
  5223.               Description: Updates a field in a multi-field input screen
  5224.               generated by routine MULTINPT.
  5225.  
  5226.               NOTE1: THE FIELD TO UPDATE MUST BE DISPLAYED ON THE
  5227.               SCREEN.  IF IT IS NOT DISPLAYED THIS ROUTINE WILL PRINT
  5228.               IT'S TEXT AT THE LOCATION THE FIELD WOULD NORMALLY OCCUPY.
  5229.  
  5230.               NOTE2: ONLY THE FIELD IS UPDATED.  IT IS THE PROGRAMMER'S
  5231.               RESPONSIBILITY TO UPDATE THE ELEMENT OF THE ARRAY HOLDING
  5232.               THE FIELD'S DATA IN ROUTINE MULTINPT. ( SEE ARGUMENT
  5233.               RTRN$() IN ROUTINE MULTINPT )
  5234.  
  5235.               Arguments:   SCRN% is the screen number ( 1 to 10 ) of the
  5236.               multi-field input screen. ( SEE ROUTINES SETINPT AND
  5237.               MULTINPT ).  If SCRN% is not a valid screen number or it
  5238.               is a screen number which has not been pre-defined by
  5239.               routine SETINPT the call to UPDATEFIELD is ignored.
  5240.  
  5241.                            FLD% is the field number of the field to
  5242.               update.  FLD% must be a valid field number for the
  5243.               specified multi-input screen ( SCRN% ) or the call to
  5244.               UPDATEFIELD is ignored.
  5245.  
  5246.                            TEXT$ is the text to print in the field.
  5247.  
  5248.  
  5249.          4.08 GETANS (PROMPT$,CHOICE$,ANS$,TR%,LC%,WATTR%,FATTR%,BORDER%)
  5250.  
  5251.               Description: Generates a prompt with an optional window
  5252.               and pauses, waiting for a single key reply.  The key may
  5253.               be any key or an individual key selected from a definable
  5254.               list.  The prompt may be windowed or on a single line.
  5255.               The key pressed may, or may not be displayed.  If it is
  5256.               displayed ENTER must be pressed to finalize the selection
  5257.               is optional.
  5258.  
  5259.               NOTE: THERE ARE TWO MODES OF OPERATION FOR THIS ROUTINE.
  5260.               SEE THE DESCRIPTION FOR THE ARGUMENT ANS$ FOR DETAILS.
  5261.  
  5262.               Arguments:   PROMPT$ is the prompt ( i.e. Press any key )
  5263.               or question ( i.e. Are you sure?  Y/N ).  It may be
  5264.               optionally windowed ( SEE BORDER% ).  The width of the
  5265.               window is determined by the length of PROMPT$.  If
  5266.               PROMPT$ is too long making the window, or prompt, too
  5267.               wide to fit on the screen an error will be reported.
  5268.  
  5269.                            CHOICE$ is the valid keys the user can
  5270.               press to exit GETANS.  If CHOICE$ = "" any key will
  5271.               exit.  This would be appropriate if PROMPT$ = "Press any
  5272.               key".  If CHOICE$ = "YN" then the "Y", "y", "N" or
  5273.  
  5274.  
  5275.  
  5276.                                        76
  5277.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.               "n" keys will exit GETANS.  The ESC key will always exit
  5288.               regardless of CHOICE$.
  5289.  
  5290.                            ANS$ serves two purposes.  On entry ANS$
  5291.               determines the mode of operation for routine GETANS.
  5292.               There are two modes of operation for this routine.
  5293.  
  5294.               1. If argument ANS$ = "" on entry, as soon as a valid key
  5295.                  is pressed the routine is exited.
  5296.  
  5297.                   EXAMPLE: ANS$ = ""
  5298.                            CALL GETANS ( PROMPT$, "YN", ANS$ ......
  5299.  
  5300.                   As soon a "Y" or "N" is pressed the routine is exited
  5301.                   with the key pressed returned in ANS$
  5302.  
  5303.               2. If argument ANS$ equals any letter on entry the letter
  5304.                  is displayed in the get answer window to the right of
  5305.                  the prompt.  The user may press any valid key
  5306.                  predicated on argument CHOICE$.  The letter represented
  5307.                  by the valid key is displayed in the get answer window.
  5308.                  The user must press ENTER to accept the choice.
  5309.  
  5310.                   EXAMPLE: ANS$ = "N"
  5311.                            CALL GETANS ( PROMPT$, "YN", ANS$........
  5312.  
  5313.                   On entry an "N" will appear after the prompt.  If a
  5314.                   "Y" is pressed it will appear after the prompt.  The
  5315.                   user must press ENTER to exit the routine with the
  5316.                   displayed letter returned in ANS$.
  5317.  
  5318.               On exit ANS$ holds the key pressed.  It is returned in
  5319.               upper case.   If CHOICE$ = "" then ANS$ = "".  If ESC is
  5320.               pressed CHR$(27) is always returned in ANS$.
  5321.  
  5322.                            TR% is the top row.  See MAKEWIND
  5323.  
  5324.                            LC% is the left column.  See MAKEWIND
  5325.  
  5326.                            WATTR% is the window's and text's color
  5327.               designation.  See MAKEWIND.  Although it is permissible to
  5328.               set ATTR% > 127 to make the border flash the text will not
  5329.               flash.
  5330.  
  5331.                            FATTR% is the field's ( if one exists )
  5332.               color.  If ANS$ equals a letter, on entry, the letter is
  5333.               displayed next to the prompt.  The color of this letter is
  5334.               set by FATTR%.
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.  
  5341.  
  5342.                                        77
  5343.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.                            BORDER% is the window's border designation.
  5354.               Title boxes ( BORDER% > 42 ) are not permitted.  Set
  5355.               BORDER% to 0 for no window ( prompt only ). SEE THE
  5356.               BORDER DESIGNATION CHART.
  5357.  
  5358.               EXAMPLE OF A CALL TO GETANS:
  5359.  
  5360.               ANS$ = ""
  5361.               CALL GETANS ("Are you sure? Y/N", "YN", ANS$, 100, 100,
  5362.               240, 11)
  5363.               ( Above must be on one line. )
  5364.  
  5365.               A window will be generated with the text "Are you sure?
  5366.               Y/N"  printed in it.  With TR% and LC% set to 100 the
  5367.               window will be centered on the screen ( See MAKEWIND ).
  5368.               ATTR% = 240, therefore, the window will be white with
  5369.               black text and a black flashing border. The user may
  5370.               press the N, n, Y, y, or ESC keys to exit.  The key
  5371.               pressed will be returned to GETANS in the argument ANS$.
  5372.  
  5373.  
  5374.          4.09 CHOICEWIND% (T$,TXT$(),CH$(),TR%,LC%,ATTR%,HATTR%,ESC%,BRDR%)
  5375.               ( CHOICEWIND% is a function )
  5376.  
  5377.               NOTE: ROUTINES INPTINIT AND SETWIND MUST BE CALLED AT LEAST
  5378.               ONCE IN ANY PROGRAM PRIOR TO CALLING THIS ROUTINE.
  5379.  
  5380.               Description: Displays a window containing text.  The
  5381.               window also displays up to ten choices.  A choice may be
  5382.               selected by using the TAB or SHIFT/TAB key to move the
  5383.               cursor to the choice and pressing ENTER or the SPACE BAR.
  5384.               A choice may also be selected by RELEASING the left mouse
  5385.               button while the mouse cursor is on the choice.  The
  5386.               choice window's height is determined by the number of
  5387.               lines of text in it.  The choice window's width is
  5388.               determined by the longest line of text or the width of the
  5389.               choices, whichever is greatest.  CHOICEWIND% returns the
  5390.               number of the selection made by the user, or 27 if ESC is
  5391.               pressed and argument ESC% > 0.
  5392.  
  5393.               Arguments:   T$ is the windows title.  Based on the value
  5394.               of BRDR% ( SEE MAKEWIND ), T$ will print in the window's
  5395.               title box or on the window's top border.
  5396.  
  5397.                            TEXT$() is an array holding the text for each
  5398.               line in the choice window.  TEXT$(1) prints as line one in
  5399.               the choice window.  TEXT$(2) prints as the second line in
  5400.               the choice window.  Each element of TEXT$() represents a
  5401.               line in the choice window.
  5402.  
  5403.               NOTE: TEXT$() DETERMINES THE NUMBER OF LINES IN THE CHOICE
  5404.               WINDOW.  IF TEXT$()'s UPPER BOUND IS TEN ( EX: REDIM
  5405.  
  5406.  
  5407.  
  5408.                                        78
  5409.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.               TEXT$(10) ), TEN LINES WILL BE PRINTED IN THE CHOICE
  5420.               WINDOW.  If TEXT$()'s UPPER BOUND IS ZERO ( EX: REDIM
  5421.               TEXT$(0) ), NO LINES OF TEXT WILL PRINT IN THE CHOICE
  5422.               WINDOW.  THIS MAY BE APPROPRIATE IF THE CHOICE WINDOW'S
  5423.               TITLE ( ARGUMENT T$ ) IS THE ONLY PROMPT REQUIRED.
  5424.  
  5425.               The following applies to TEXT$();
  5426.  
  5427.               1. TEXT$ must ALWAYS be dimensioned prior to any call to
  5428.                  CHOICEWIND%.  If no text is used TEXT$() must be
  5429.                  dimensioned to zero. ( EX: REDIM TEXT$(0) )
  5430.  
  5431.               2. If an element of TEXT$() has a "@" as the first
  5432.                  character, the text will be centered in the choice
  5433.                  window.
  5434.  
  5435.               3. If an element of TEXT$() = "" a blank line will be
  5436.                  printed in the choice window.
  5437.  
  5438.               4. If an element of TEXT$() = "-" a segmenting single line
  5439.                  will print across the choice window.
  5440.  
  5441.               NOTE: TEXT$() IS ERASED BY THE CALL TO CHOICEWIND TO
  5442.               CONSERVE MEMORY. TEXT$() MUST BE REDIMENSIONED PRIOR TO
  5443.               ANY CALL TO CHOICEWIND.
  5444.  
  5445.                            CH$() is an array holding the choices for the
  5446.               choice window.  Each choice is automatically bracketed. If
  5447.               CH$(1) = "OK", it will be displayed as "< OK >".  One to
  5448.               10 choices are permitted
  5449.  
  5450.               NOTE: CH$() IS ERASED BY THE CALL TO CHOICEWIND TO
  5451.               CONSERVE MEMORY. CH$() MUST BE REDIMENSIONED PRIOR TO ANY
  5452.               CALL TO CHOICEWIND.
  5453.  
  5454.                            TR% is the choice window's top row position.
  5455.               If TR% = 100 the choice window is centered top to bottom
  5456.               on the display.
  5457.  
  5458.                            LC% is the choice window's left column
  5459.               position. If LC% = 100 the choice window will be centered
  5460.               left to right on the display.
  5461.  
  5462.                            ATTR% is the color of the choice window and
  5463.               it's text.
  5464.  
  5465.                            HATTR% if not zero allows "key character"
  5466.               selections and sets the key character color of the items
  5467.               in CH$().  The key character is always the first character
  5468.               of each element of CH$().  If HATTR% = 0 key characters
  5469.               are not used.
  5470.  
  5471.  
  5472.  
  5473.  
  5474.                                        79
  5475.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.                            ESC% allows CHOICEWIND% to exit if the ESC
  5486.               key is pressed.  If ESC% = 1 and ESC is pressed
  5487.               CHOICEWIND% will exit with a value of 27.  If ESC% = 0 and
  5488.               ESC is pressed CHOICEWIND% will not be exited.
  5489.  
  5490.                            BRDR% is the choice window's border. ( SEE
  5491.               ARGUMENT BORDER% FOR ROUTINE MAKEWIND. ).  BRDR% may NOT
  5492.               equal zero.
  5493.  
  5494.  
  5495.          4.10 CHOICEBAR% (CH$(), TR%, LC%, WD%, ATTR%, HATTR%, EX$ )
  5496.               ( CHOICEBAR% is a function. )
  5497.  
  5498.               NOTE: ROUTINE INPTINIT MUST BE CALLED AT LEAST ONCE IN ANY
  5499.               PROGRAM PRIOR TO CALLING THIS ROUTINE.
  5500.  
  5501.               Description: Displays one to ten choices on a single line
  5502.               on the display.  A choice may be made by moving the cursor
  5503.               to the choice using the TAB or SHIFT/TAB keys and pressing
  5504.               the ENTER key or the SPACE BAR.  If the left mouse button
  5505.               is released while the mouse cursor is on a choice the
  5506.               selection is made.  CHOICEBAR% returns the following.
  5507.  
  5508.                0 --------- On entry argument EX$ = "VIEW" routine
  5509.                            CHOICEBAR is displayed and exited.
  5510.                1 TO 10 --- Choice 1 to 10 was selected.  Choice 1 is the
  5511.                            leftmost choice, 2 is to the right of 1 etc.
  5512.                11      --- PGUP is an exit key and PGUP was pressed.
  5513.                12      --- PGDWN is an exit key and PGDWN was pressed.
  5514.               -1 TO -10 -- F1 to F10 are exit keys and F1 to F10 was
  5515.                            pressed.
  5516.                27      --- ESC is an exit key and ESC was pressed.
  5517.                15      --- TAB is an exit key and TAB was pressed.
  5518.                14      --- SHIFT/TAB is an exit key and SHIFT/TAB was
  5519.                            pressed.
  5520.                200     --- The left mouse button was pressed outside of
  5521.                            choicebar selections and an "O" was included
  5522.                            in argument EXIT$
  5523.  
  5524.  
  5525.               Arguments:   CH$() is an array holding the choices for the
  5526.               choice bar.  Each choice is automatically bracketed. If
  5527.               CH$(1) = "OK", it will be displayed as "< OK >".  One to
  5528.               10 choices are permitted.
  5529.  
  5530.                            TR% is the choice bar's top row position.
  5531.  
  5532.                            LC% is the choice bar's left column position.
  5533.  
  5534.                            WD% is the width of the choice bar.  The
  5535.               choices are automatically spaced in the choice bar's
  5536.               width.
  5537.  
  5538.  
  5539.  
  5540.                                        80
  5541.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.                            ATTR% is the color of the choice bar and it's
  5552.               text.
  5553.  
  5554.                            HATTR% if not zero allows "key character"
  5555.               selections and sets the key character color of the items
  5556.               in CH$().  The key character is always the first character
  5557.               of each element of CH$().  If HATTR% = 0 key characters
  5558.               are not used.
  5559.  
  5560.  
  5561.                            EX$ is used to provide additional exit keys
  5562.               or alternate ways to exit CHOICEBAR%.  EX$ may equal any
  5563.               combination of "0123456789UDETO" or "VIEW".  Each
  5564.               character in EX$ provides a means of exiting CHOICEBAR as
  5565.               indicated by the following list.
  5566.  
  5567.               "0" ---------- The F10 key exits.
  5568.               "1" to "9" --- The F1 to F9 keys exit.
  5569.               "U" ---------- The PAGE UP key exits.
  5570.               "D" ---------- The PAGE DOWN key exits.
  5571.               "E" ---------- The ESC key exits.
  5572.               "T" ---------- The TAB key and SHIFT/TAB combination exit.
  5573.               "O" ---------- Pressing the left MOUSE button while the
  5574.                              mouse cursor is out of all choices exits.
  5575.               "VIEW" ------- This displays the choicebar only.  Routine
  5576.                              CHOICEBAR is displayed and exited.
  5577.  
  5578.  
  5579.               NOTE: THE DISPLAY AREA UNDER A CHOICEBAR IS NOT SAVED.  BY
  5580.               PLACING THE CHOICEBAR IN AN EXISTING WINDOW, THIS
  5581.               LIMITATION IS NEGATED.   WHEN ROUTINE RSTRWIND IS CALLED
  5582.               FOR THE EXISTING WINDOW THE AREA UNDER THE WINDOW IS
  5583.               RESTORED.
  5584.  
  5585.  
  5586.  
  5587.  
  5588.  
  5589.  
  5590.  
  5591.  
  5592.  
  5593.  
  5594.  
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.                                        81
  5607.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.                       *****  DIRECTORY ROUTINES *****
  5618.  
  5619.          Directory routines compliment features included with QB 4.5
  5620.          BASIC 7.1 ( PDS ) and VB for DOS .  Procedures to find the
  5621.          current disk,  current path, disk capacity, and disk space
  5622.          available are supplied with WINDOWS R-E-Z.  Also included are
  5623.          routines to find the directory of any disk or path.  In
  5624.          addition a file's size, date, time, and attributes can be
  5625.          found.
  5626.  
  5627.          5.00 GETDISK%                ( THIS IS A FUNCTION )
  5628.  
  5629.               Description: Returns the default disk drive. Returns 1
  5630.               drive A:, 2 for B:, 3 for C:, 4 for D: etc.
  5631.  
  5632.               Argument:    None
  5633.  
  5634.               NOTE: DECLARE THIS FUNCTION IN ANY MODULE WHICH USES IT.
  5635.  
  5636.          5.01 FINDPATH$               ( THIS IS A FUNCTION )
  5637.  
  5638.               NOTE: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING THIS
  5639.               FUNCTION.  SEE SECTION " MAKING A DIRECTORY SCROLL
  5640.               WINDOW"
  5641.  
  5642.               Description:  Returns the current path (directory) in the
  5643.               following format, always starting with the drive letter,
  5644.  
  5645.                      DRIVE:\SUB-DIRECTORY\SUB-DIRECTORY\
  5646.  
  5647.               NOTE1: THE RETURNED STRING ALWAYS ENDS WITH A "\".
  5648.               NOTE2: DECLARE THIS FUNCTION IN ANY MODULE WHICH USES IT.
  5649.  
  5650.  
  5651.          5.02 SETDISK (DRIVE%, BADFLAG%)
  5652.  
  5653.               Description: Changes the default drive.
  5654.  
  5655.               Arguments:   DRIVE% is the drive designation.  DRIVE% =
  5656.               1 for drive A:, 2 for B:, 3 for C:, etc.
  5657.  
  5658.                            BADFLAG% = 1 if DRIVE% is less than 1 or
  5659.               greater than the number of logical drives.  BADFLAG% = 0
  5660.               if DRIVE% is in the range from 1 to the number of logical
  5661.               drives in the system.
  5662.  
  5663.               NOTE: A SYSTEM WITH A FLOPPY DRIVE FOR DRIVE A: AND A
  5664.               HARD DISK FOR DRIVE C: HAS 3 LOGICAL DRIVES.  THEREFORE,
  5665.               BADFLAG% WILL = 0 IF DRIVE% = 1 TO 3 EVEN THOUGH A
  5666.               PHYSICAL DRIVE B: DOES NOT EXIST.  ATTEMPTS TO ACCESS
  5667.               DRIVE B: MAY RESULT IN THE DOS MESSAGE. "Place a disk in
  5668.               drive B: and press any key" BEING DISPLAYED.
  5669.  
  5670.  
  5671.  
  5672.                                        82
  5673.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.          5.03 DISKSIZE (DRIVE%, SIZE&, FREE&)
  5684.  
  5685.               NOTE: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING THIS
  5686.               ROUTINE.  SEE SECTION " MAKING A SCROLL DIRECTORY
  5687.               WINDOW".
  5688.  
  5689.               Description: Retrieves disk space and disk free space.
  5690.  
  5691.               Arguments:   DRIVE% is the drive designation.  It
  5692.               follows the same rules as detailed in SETDISK.  The note
  5693.               for SETDISK applies.
  5694.  
  5695.                            SIZE& is the size in bytes of disk space.
  5696.  
  5697.                            FREE& is the size in bytes of free disk
  5698.               space.
  5699.  
  5700.               NOTE: THE ARGUMENTS FOR SIZE AND FREE SPACE ARE LONG
  5701.               INTEGERS.  ANY VARIABLE USED TO REPRESENT THEM MUST BE
  5702.               DESIGNATED AS A LONG INTEGER ( FOLLOWED BY A "&" SIGN )
  5703.               OR A PARAMETER MIS-MATCH WILL BE REPORTED.
  5704.  
  5705.  
  5706.          5.04 FINDDIR (PATH$, TYP$, FILE%)
  5707.  
  5708.               NOTE # 1: THE FOLLOWING MUST BE PLACED BEFORE ANY
  5709.               EXECUTABLE STATEMENTS IN ANY MODULE CALLING "FINDDIR"
  5710.  
  5711.                 TYPE DIREC
  5712.                    SIZE AS LONG
  5713.                    DATE AS STRING * 10
  5714.                    TIME AS STRING * 6
  5715.                    ATTR AS INTEGER
  5716.                 END TYPE
  5717.                 COMMON SHARED /DIRECTORY/ DIREC$(), DIRINFO() AS DIREC
  5718.  
  5719.               NOTE # 2: ALWAYS TRAP FOR DISK ERRORS PRIOR TO CALLING
  5720.               THIS ROUTINE.  SEE SECTION " MAKING A SCROLL DIRECTORY
  5721.               WINDOW"
  5722.  
  5723.               Description:  Puts the directory listing of the
  5724.               specified path in an array, DIREC$().  If a long
  5725.               directory search is requested the files size, date, time
  5726.               and attributes are also placed in array, DIRINFO().  The
  5727.               arrays MUST be defined as explained above in NOTE # 1.
  5728.  
  5729.               Arguments:    PATH$ is the path for the directory
  5730.               listing search.  It must be in the same format as
  5731.               returned by the procedure FINDPATH.  It may be expanded
  5732.               to restrict the search.  Wildcards are permitted.
  5733.  
  5734.               EXAMPLE: IF PATH$ = "C:\TEST\*.BAS", THE SEARCH WILL
  5735.  
  5736.  
  5737.  
  5738.                                        83
  5739.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.               FIND FILES IN DRIVE C:, SUB-DIRECTORY "TEST", WITH THE
  5750.               EXTENSION ".BAS".
  5751.  
  5752.                             TYP$ restricts or expands the search to
  5753.               include files with specified attributes.  An "L" in TYP$
  5754.               tells FINDDIR to make a long directory search.  The
  5755.               file's size, date, time and attributes are found in a
  5756.               long directory search, in addition to the files name,
  5757.               TYP$ may contain any combination of the following:
  5758.  
  5759.                            A - file's archive bit is set
  5760.                            H - hidden files
  5761.                            S - system files
  5762.                            R - read only files
  5763.                            D - sub-directory listings
  5764.                            V - volume entry
  5765.                            O - no file attribute
  5766.                            L - long directory search - SEE ABOVE
  5767.  
  5768.               EXAMPLE:  IF TYP$ = "HS" ONLY HIDDEN AND SYSTEM FILES
  5769.               WILL BE FOUND.
  5770.  
  5771.                            FILE% is the number of files found.  FILE% =
  5772.               0 if no files were found.
  5773.  
  5774.               If files are found their names are placed in the array,
  5775.               DIREC$().  A long directory search places the file's
  5776.               size, date, time and attribute designation in
  5777.               DIRINFO().
  5778.  
  5779.               DIREC$(1) = The name of first file found.
  5780.               DIRINFO(1).SIZE = The size of the file.
  5781.               DIRINFO(1).DATE = The files creation or last update date.
  5782.               DIRINFO(1).TIME = The files creation or last update time.
  5783.               DIRINFO(1).ATTR = The files attribute designation.
  5784.  
  5785.               The following describes DIRINFO(1).ATTR;
  5786.  
  5787.               IF DIRINFO(1).ATTR AND 1 the file is a read only file.
  5788.               IF DIRINFO(1).ATTR AND 2 the file is a hidden file.
  5789.               IF DIRINFO(1).ATTR  AND 4 the file is a system file.
  5790.               IF DIRINFO(1).ATTR  AND 8 the entry is a volume entry.
  5791.               IF DIRINFO(1).ATTR  AND 16 the entry is a sub-directory.
  5792.               IF DIRINFO(1).ATTR  AND 32 the files archived bit is set.
  5793.               IF DIRINFO(1).ATTR  = 0 the file has no attribute.
  5794.  
  5795.               NOTE:  WHEN FINDDIR IS CALLED THE ARRAY, DIREC$() IS
  5796.               AUTOMATICALLY DIMENSIONED TO THE NUMBER OF FILES FOUND.
  5797.               THE ARRAY, DIRINFO() IS ALSO DIMENSIONED TO THE NUMBER
  5798.               OF FILES FOUND PROVIDING THE DIRECTORY SEARCH IS A LONG
  5799.               DIRECTORY SEARCH.  EACH FILE FOUND USES ABOUT 16 BYTES
  5800.               OF MEMORY PLUS AN ADDITIONAL 22 BYTES IF THE DIRECTORY
  5801.  
  5802.  
  5803.  
  5804.                                        84
  5805.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.               SEARCH IS LONG.  TO RECLAIM THE MEMORY ( AFTER USING THE
  5816.               INFORMATION RETURNED BY THE CALL TO FINDDIR ) THE ARRAYS
  5817.               MUST BE ERASED VIA THE STATEMENT:
  5818.  
  5819.                            ERASE DIREC$, DIRINFO
  5820.  
  5821.  
  5822.          5.05 EXEPATH$                ( THIS IS A FUNCTION )
  5823.  
  5824.               Description: Returns the path of the active executable
  5825.               program. The path always ends with a "\" as the last
  5826.               character.  Any path with three characters is, therefor,
  5827.               the root directory.
  5828.  
  5829.               EXAMPLE:  A:\   B:\    C:\DOS\    D:\TEST\
  5830.  
  5831.               Arguments:   None
  5832.  
  5833.               NOTE: IN THE QB/QBX/VBDOS ENVIRONMENTS THE PROGRAM QB.EXE,
  5834.               QBX.EXE OR VBDOS.EXE IS THE ACTIVE EXECUTABLE PROGRAM. THIS
  5835.               FUNCTION IS ONLY USEFUL AFTER A PROGRAM IS COMPILED AND MADE
  5836.               AN EXECUTABLE USING LINK.
  5837.  
  5838.  
  5839.  
  5840.  
  5841.  
  5842.  
  5843.  
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.  
  5857.  
  5858.  
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865.  
  5866.  
  5867.  
  5868.  
  5869.  
  5870.                                        85
  5871.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.  
  5880.  
  5881.                    ***** MAKING A DIRECTORY SCROLL WINDOW *****
  5882.  
  5883.               REM: THIS EXAMPLE FINDS THE DIRECTORY LISTING OF ALL FILES
  5884.               REM: WITH THE ARCHIVE BIT SET IN DRIVE A.  IT PUTS THE LISTING
  5885.               REM: IN A SCROLL WINDOW AND WAITS FOR THE SELECTION OF A
  5886.               REM: FILE.
  5887.  
  5888.               TYPE DIREC                  ' REQUIRED IN ANY MODULE
  5889.                    SIZE AS LONG           ' USING DIRECTORY ROUTINES.
  5890.                    DATE AS STRING * 10
  5891.                    TIME AS STRING * 6
  5892.                    ATTR AS INTEGER
  5893.               END TYPE
  5894.               COMMON SHARED /DIRECTORY/ DIREC$(), DIRINFO() AS DIREC
  5895.               DIM DUMMY$ (0)                    ' FOR INFO-LINE (NOT USED)
  5896.               CALL SETWIND(1, 1, 7,0 , 15 )     ' INITIALIZE
  5897.           START:
  5898.               CLS
  5899.               ON ERROR GOTO DISKERROR    ' ALWAYS TRAP FOR DISK
  5900.                                          ' ERRORS.
  5901.  
  5902.               REM: AS TYP$ INCLUDES AN "A", THE  FOLLOWING CALL TO
  5903.               REM: FINDDIR PLACES FILES WITH THE ARCHIVE BIT SET FROM
  5904.               REM: DRIVE A:, ("A:\"), IN DIREC$().  AS TYP$ INCLUDES AN "L"
  5905.               REM: THE FILES SIZE, DATE, TIME AND ATTRIBUTES ARE PLACED IN
  5906.               REM: DIRINFO().  FILE% HOLDS THE NUMBER OF FILES FOUND.
  5907.  
  5908.               TYP$ ="AL"
  5909.               CALL FINDDIR ("A:\", TYP$, FILE%)
  5910.  
  5911.               IF FILE% > 0 THEN       ' ONLY IF FILES EXISTED.
  5912.  
  5913.                   REM: MAKE A WINDOW.  STATEMENT MUST BE ON 1 LINE
  5914.  
  5915.                   CALL MAKEWIND(1 ,"@Select file - Press ENTER",
  5916.                   100 ,100 ,30 ,10 ,15 ,101)
  5917.  
  5918.                   REM: MAKE IT AN AUTO-EXIT SCROLL WINDOW.
  5919.  
  5920.                   ' Following must be on one line.
  5921.                   CALL SCRLWIND(DIREC$(), DUMMY$(),"", FILE%, "",
  5922.                                 RTRN%, 1, 1, RKEY%, 0, 1, 0)
  5923.  
  5924.                   IF RKEY% <> 27 THEN
  5925.                       LOCATE 1,1
  5926.                       PRINT "FILE .......";DIREC$(RTRN%)
  5927.                       PRINT "SIZE........";DIRINFO(RTRN%).SIZE
  5928.                       PRINT "DATE........";DIRINFO(RTRN%).DATE
  5929.                       PRINT "TIME........";DIRINFO(RTRN%).TIME
  5930.                       PRINT "ATTRIBUTE...";DIRINFO(RTRN%).ATTR
  5931.                       ERASE DIREC$, DIRINFO
  5932.                    END IF
  5933.  
  5934.  
  5935.  
  5936.                                        86
  5937.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.  
  5948.                    CALL RSTRWIND(1,1)        ' REMOVE THE WINDOW
  5949.  
  5950.                    IF RTRN%=27 THEN GOTO START 'ESC WAS PRESSED
  5951.               ELSE             ' FILE% = 0 ( NO FILES WERE FOUND )
  5952.                    PRINT "NO FILES WERE FOUND"
  5953.               END IF
  5954.               ON ERROR GOTO 0             ' TURN OFF ERROR DETECTION
  5955.  
  5956.               END
  5957.  
  5958.               DISKERROR:
  5959.  
  5960.               REM: ERR = ERROR NUMBER. THIS ERROR HANDLING ROUTINE
  5961.               REM: WILL DETECT IF DISK IS NOT READY, NOT AVAILABLE,
  5962.               REM: OR PATH WAS BAD.
  5963.               SELECT CASE ERR
  5964.                  CASE 71
  5965.                     E$ = "DISK NOT READY"
  5966.                  CASE 68
  5967.                     E$ = "DISK NOT AVAILABLE"
  5968.                  CASE 76
  5969.                     E$ = "PATH NOT FOUND"
  5970.                  CASE ELSE
  5971.                     E$ = "UN-IDENTIFIED DISK ERROR"
  5972.               END SELECT
  5973.  
  5974.               REM: FOLLOWING MUST BE ON ONE LINE
  5975.  
  5976.               CALL GETANS("DISK ERROR: " + E$ + " Press any key.."
  5977.               ,"", "",100 ,100, 143, 15, 1)
  5978.  
  5979.               RESUME START
  5980.  
  5981.  
  5982.  
  5983.  
  5984.  
  5985.  
  5986.  
  5987.  
  5988.  
  5989.  
  5990.  
  5991.  
  5992.  
  5993.  
  5994.  
  5995.  
  5996.  
  5997.  
  5998.  
  5999.  
  6000.  
  6001.  
  6002.                                        87
  6003.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.                      ****  KEYBOARD AND MOUSE ROUTINES ****
  6014.  
  6015.          Adding the ability to "access the mouse" these routines provide
  6016.          increased flexibility over BASIC's INKEY$ statement.
  6017.  
  6018.          NOTE: MOST OF THESE ROUTINES ARE ASSEMBLY ROUTINES.   ALWAYS
  6019.          PLACE THEM IN DECLARE STATEMENTS IN ANY MODULE WHICH USES THEM.
  6020.          THIS WILL ASSURE ARGUMENT MATCHING AND PREVENT ACCIDENTAL
  6021.          PROGRAM "CRASHES".
  6022.  
  6023.  
  6024.          6.00 GETAKEY%
  6025.  
  6026.               Description: GETAKEY% is a function.   It returns a
  6027.               value for the next character in the keyboard buffer or
  6028.               zero if no character is in the keyboard buffer.  If the
  6029.               key pressed represents a standard ASCII/IBM character, the
  6030.               code for the character ( 1 to 255 ) is returned in
  6031.               GETAKEY%.  If the key pressed produces an extended scan
  6032.               code such as the up arrow, the extended scan code for the
  6033.               key multiplied by 256 is returned in GETAKEY%.  GETAKEY%
  6034.               returns  18432 ( 72 * 256 ) for the up arrow.  For those
  6035.               keys which produce an extended scan code over 127, such
  6036.               as CTRL-PGUP ( 132 ), GETAKEY% returns a negative value.
  6037.  
  6038.               SEE THE GETAKEY CODE CHART IN THE APPENDIX.
  6039.  
  6040.               -------------------------------------------------------
  6041.               'EXAMPLE: WAITS FOR RETURN, "A", DOWN ARROW, OR END.
  6042.               'PRESS END TO END
  6043.  
  6044.                DECLARE FUNCTION GETAKEY%  ( PLACE AT MODULE LEVEL )
  6045.  
  6046.               DO
  6047.                 SELECT CASE GETAKEY%      ' PROGRAM GETS INPUT HERE.
  6048.                   CASE 13                 ' 13 IS ASCII FOR RETURN/ENTER.
  6049.                     PRINT "RETURN"
  6050.                   CASE 65                 ' 65 IS ASCII FOR "A".
  6051.                     PRINT "A"
  6052.                   CASE 80 * 256           ' 80 IS THE EXTENDED SCAN.
  6053.                     PRINT "DOWN ARROW"    ' CODE FOR THE DOWN ARROW.
  6054.                   CASE ELSE
  6055.                 END SELECT
  6056.               LOOP WHILE A% <> (79 * 256) ' 79 IS THE EXTENDED SCAN
  6057.               PRINT "END"                 ' FOR END.
  6058.               END
  6059.               --------------------------------------------------------
  6060.  
  6061.  
  6062.  
  6063.  
  6064.  
  6065.  
  6066.  
  6067.  
  6068.                                        88
  6069.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6070.  
  6071.  
  6072.  
  6073.  
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.          6.01 CLEARKB
  6080.  
  6081.               Description: Clears all characters from the type ahead
  6082.               keyboard buffer.
  6083.  
  6084.               Arguments:   None
  6085.  
  6086.  
  6087.          6.02 MOUSEON% (ISON%)  ( FUNCTION )
  6088.  
  6089.               Description: Sets the mouse status and initializes the
  6090.               mouse.  Returns 1 if the mouse driver is present, the
  6091.               mouse hardware is present, and the mouse is set on by
  6092.               argument ISON%.  If the preceding conditions are not
  6093.               true MOUSEON% returns 0.
  6094.  
  6095.               Arguments:   ISON% turns the mouse off or attempts to
  6096.               turn the mouse on.  If ISON% = 1, and the mouse driver and
  6097.               hardware are present, the mouse will be turned on.  The
  6098.               mouse cursor will be visible and positioned on row one and
  6099.               column one of the display.  If ISON% = 0 the mouse is
  6100.               turned off, and the mouse cursor is hidden.
  6101.  
  6102.  
  6103.          6.03 MOUSEHIDE
  6104.  
  6105.               Description: Hides the mouse cursor.  Decrements the
  6106.               mouse "visibility flag" by one.  ( SEE MOUSESHOW )
  6107.  
  6108.               Arguments:   None
  6109.  
  6110.  
  6111.          6.04 MOUSESHOW
  6112.  
  6113.               Description: Displays the mouse cursor. Increments the
  6114.               mouse  "visibility flag" by one.
  6115.  
  6116.               NOTE: FOR EVERY CALL TO MOUSEHIDE A SUBSEQUENT CALL TO
  6117.               MOUSESHOW IS REQUIRED TO DISPLAY THE MOUSE CURSOR.  TWO
  6118.               CONSECUTIVE CALLS TO MOUSEHIDE REQUIRE TO CONSECUTIVE
  6119.               CALLS TO MOUSESHOW TO DISPLAY THE MOUSE.  THE REVERSE
  6120.               IS NOT TRUE.
  6121.  
  6122.               EXAMPLE: ( ASSUMES THE MOUSE CURSOR IS VISIBLE )
  6123.  
  6124.               CALL MOUSEHIDE  ' Mouse cursor hidden - "visibility
  6125.                               ' flag" is decremented.
  6126.  
  6127.               CALL MOUSEHIDE  ' "visibility flag" decremented again.
  6128.  
  6129.               CALL MOUSESHOW  ' "Visibility flag" incremented.  Mouse
  6130.                               ' is still hidden.
  6131.  
  6132.  
  6133.  
  6134.                                        89
  6135.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.               CALL MOUSESHOW  ' "Visibility flag" incremented.  Mouse is
  6146.                               ' now displayed.
  6147.  
  6148.  
  6149.          6.05 MOUSEROW%     ( NOTE: THIS IS A FUNCTION )
  6150.  
  6151.               Description: Returns the row position of the mouse cursor.
  6152.  
  6153.               Arguments:   None
  6154.  
  6155.  
  6156.          6.06 MOUSECOL%     ( NOTE: THIS IS A FUNCTION )
  6157.  
  6158.               Description: Returns the column position of the mouse cursor.
  6159.  
  6160.               Arguments:   None
  6161.  
  6162.  
  6163.          6.07 MOUSEPOS ( ROW%, COLUMN% )
  6164.  
  6165.               Description: Moves the mouse cursor to a specified position.
  6166.  
  6167.               NOTE: IT IS POSSIBLE TO MOVE THE CURSOR OFF OF THE DISPLAY
  6168.  
  6169.               Arguments:   ROW% is the row position.
  6170.  
  6171.                            COLUMN% is the column position.
  6172.  
  6173.  
  6174.          6.08 MOUSELIMIT ( TOPROW%, BOTTOMROW%, LEFTCOL%, RIGHTCOL% )
  6175.  
  6176.               Description: Sets the bounds for mouse cursor movement.
  6177.  
  6178.               Arguments:   TOPROW% is the top row limit of movement
  6179.               for the mouse cursor.
  6180.  
  6181.                            BOTTOMROW% is the bottom row limit of
  6182.               movement for the mouse cursor.
  6183.  
  6184.                            LEFTCOL% is the left column limit of movement
  6185.               for the mouse cursor.
  6186.  
  6187.                            RIGHTCOL% is the right column limit of
  6188.               movement for the mouse cursor.
  6189.  
  6190.          6.09 LBUTTON%     ( NOTE: THIS IS A FUNCTION )
  6191.  
  6192.               Description: Returns the status of the left mouse button.
  6193.               If the left mouse button is pressed LBUTTON% = 1. If the
  6194.               left mouse button is not pressed LBUTTON% = 0.
  6195.  
  6196.               Arguments: None
  6197.  
  6198.  
  6199.  
  6200.                                        90
  6201.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.          6.10 RBUTTON%     ( NOTE: THIS IS A FUNCTION )
  6212.  
  6213.               Description: Returns the status of the right mouse button.
  6214.               If the right mouse button is pressed RBUTTON% = 1. If the
  6215.               right mouse button is not pressed RBUTTON% = 0.
  6216.  
  6217.               Arguments: None
  6218.  
  6219.  
  6220.          6.11 MOUSEINWIND% ( WIND% )       ( NOTE: THIS IS A FUNCTION )
  6221.  
  6222.               Description: Returns a value signifying if the mouse
  6223.               cursor is in a specified window.  The returned values
  6224.               may equal the following.
  6225.  
  6226.               NOTE: IF THE WINDOW HAS A TITLE BOX ( BORDER% > 99 ), THIS
  6227.               FUNCTION DOES NOT CONSIDER THE MOUSE CURSOR TO BE IN THE
  6228.               WINDOW WHEN IT IS IN THE TITLE BOX.  THE CURSOR IS CONSID-
  6229.               ED IN A "TITLE BOX" WINDOW WHEN IT IS IN ANY AREA OF THE
  6230.               WINDOW EXCEPT THE TITLE BOX.
  6231.  
  6232.               0 -- The mouse cursor is not in the specified window or
  6233.                    the specified window does not exist.
  6234.  
  6235.               1 -- The mouse cursor is on the TOP border ( including
  6236.                    the corners ) of the specified window. THE TOP
  6237.                    BORDER OF A WINDOW WITH A TITLE BOX IS THE LINE
  6238.                    WHICH SEPARATES THE TITLE FROM THE WINDOW.
  6239.  
  6240.               2 -- The mouse cursor is on the RIGHT border ( excluding
  6241.                    the corners ) of the specified window.
  6242.  
  6243.               3 -- The mouse cursor is on the BOTTOM border ( including
  6244.                    the corners ) of the specified window.
  6245.  
  6246.               4 -- The mouse cursor is on the LEFT border ( excluding
  6247.                    the corners ) of the specified window.
  6248.  
  6249.               5 -- The mouse cursor is in the interior of the specified
  6250.                    window.
  6251.  
  6252.               NOTE: MOUSEINWIND% RETURNS A VALUE BASED ON THE WINDOW'S
  6253.               COORDINATES.  IT IS THE PROGRAMMERS RESPONSIBILITY TO
  6254.               ASSURE THE SPECIFIED WINDOW IS VISIBLE WHEN MOUSEINWIND%
  6255.               IS CALLED.
  6256.  
  6257.               Argument:    WIND% is the number of the window;
  6258.  
  6259.               0 to 20 represent standard windows.
  6260.               21 represents the INPUT window, if one is active.
  6261.               23 represents the PULLDOWN window, if one is active.
  6262.               24 represents the PULLDOWN menubar, if one is active.
  6263.  
  6264.  
  6265.  
  6266.                                        91
  6267.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.          6.12 MOUSEINMULT% ( MULTSCRN% )    ( NOTE: THIS IS A FUNCTION )
  6278.  
  6279.               Description: Returns the field number of a specified
  6280.               multi-field input screen the mouse cursor occupies or
  6281.               zero if the mouse cursor is not in a field.
  6282.               NOTE: IT IS THE PROGRAMMERS RESPONSIBILITY TO ASSURE THE
  6283.               SPECIFIED MULTI-FIELD SCREEN IS DISPLAYED.  IF IT IS NOT
  6284.               AND IT EXISTS, MOUSEINMULT% RETURNS A VALUE AS IF IT IS
  6285.               DISPLAYED.
  6286.  
  6287.               Argument:   MULTSCRN% is a multi-field input screen defined
  6288.               by previous calls to SETINPT and MAKEFIELD, and displayed
  6289.               by MULTINPT.  If MULTSCRN% is out of range ( 1 to 10 ) or
  6290.               set to an undefined input screen, MOUSEINMULT% returns zero.
  6291.  
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.  
  6299.  
  6300.  
  6301.  
  6302.  
  6303.  
  6304.  
  6305.  
  6306.  
  6307.  
  6308.  
  6309.  
  6310.  
  6311.  
  6312.  
  6313.  
  6314.  
  6315.  
  6316.  
  6317.  
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323.  
  6324.  
  6325.  
  6326.  
  6327.  
  6328.  
  6329.  
  6330.  
  6331.  
  6332.                                        92
  6333.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6334.  
  6335.  
  6336.  
  6337.  
  6338.  
  6339.  
  6340.  
  6341.  
  6342.  
  6343.                         **** INFO-LINE ROUTINES *****
  6344.  
  6345.          These routines allow the programmer to set up and print in an
  6346.          info-line at any location on the screen.  The info-line can be
  6347.          used to print messages, instructions, or a prompt.  Used in
  6348.          conjunction with routines PULLDOWN and SCRLWIND these routines
  6349.          will change the message in the info-line as the scroll bar is
  6350.          moved through the selections in the pulldown and scroll windows.
  6351.  
  6352.  
  6353.          7.00 INFOLINE ( TR%, LC%, WD%, ATTR% )
  6354.  
  6355.               Description: Set up routine for routines PRINTINFO,
  6356.               INFOFIXED, AND RSTRINFO.  Sets the coordinates and the
  6357.               color for the info-line.  Defines the fixed info-string to
  6358.               equal "" ( SEE: INFOFIXED ).  Makes the info-line active.
  6359.               Saves the display area specified by TR%, LC%, and WD%.
  6360.               This area may be restored by calling routine RSTRINFO.
  6361.               INFOLINE DOES NOT PRINT OR DISPLAY THE INFO-LINE.  THIS IS
  6362.               ACCOMPLISHED BY ROUTINE PRINTINFO.  Routine PRINTINFO is
  6363.               incorporated in routines PULLDOWN and SCRLWIND.  It may
  6364.               also be used prior to calling other routines. ( SEE:
  6365.               Examples - Info-line routines )
  6366.  
  6367.               NOTE: IF AN INFO-LINE IS ACTIVE A CALL TO INFOLINE DOES
  6368.               NOTHING EXCEPT TO CHANGE THE COLOR (IF IT IS DIFFERENT) OF
  6369.               THE INFO-LINE FOR SUBSEQUENT CALLS TO PRINTINFO.  THE
  6370.               INFO-LINE IS DEACTIVATED VIA A CALL TO RSTRINFO.
  6371.  
  6372.               Arguments:   TR% is the top row position of the info-line.
  6373.  
  6374.                            LC% is the left column position of the info-
  6375.               line.  If LC% + WD% > 81 an error will be reported.
  6376.  
  6377.                            WD% is the info-lines width.  If WD% + LC% >
  6378.               81 an error will be reported.
  6379.  
  6380.                            ATTR% is the info-lines color ( SEE THE COLOR
  6381.               ATTRIBUTE CHART ).  ATTR% must range from 1 to 255  or it
  6382.               is adjusted to ATTR% AND 127.
  6383.  
  6384.          7.01 PRINTINFO ( INFO$ )
  6385.  
  6386.               Description: Displays the info-line and prints in same.
  6387.               The info-line must have been made active by a previous
  6388.               call to INFOLINE.  If a fixed info-string has been
  6389.               previously defined by a call to routine INFOFIXED,
  6390.               PRINTINFO adds it's text to the fixed info-string and
  6391.               displays the result in the info-line ( SEE: INFOFIXED ).
  6392.               If an info-line is not active PRINTINFO does nothing.  (
  6393.               SEE: Examples  -Info-line routines.
  6394.  
  6395.  
  6396.  
  6397.  
  6398.                                        93
  6399.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.               Argument:    INFO$ is the string which will print in the
  6410.               info-line.  If a fixed info-string has been defined by
  6411.               routine INFOFIXED, INFO$ is added to the fixed info-string
  6412.               with the result printing in the info-line.  If the length
  6413.               of the fixed info-string plus the length of INFO$ will not
  6414.               fit in info-line defined by routine INFOLINE it is
  6415.               truncated to fit.
  6416.  
  6417.  
  6418.          7.02 INFOFIXED ( FIXEDINFO$ )
  6419.  
  6420.               Description: Defines a fixed info-string which will print
  6421.               every time routine PRINTINFO is called.  As PRINTINFO is
  6422.               called for every entry in a scroll or pulldown window,
  6423.               INFOFIXED is useful for these routines.  The info-line
  6424.               must be active or INFOFIXED does nothing.
  6425.               ( SEE: Examples - Info-line routines )
  6426.  
  6427.               Argument:    FIXEDINFO$ is the fixed info-string.  It will
  6428.               remain the fixed info-string until routine RSRTINFO is
  6429.               called with argument DELFLAG% = 1 ( SEE: RSTRINFO ).  The
  6430.               fixed info-string may be also disabled by calling
  6431.               INFOFIXED with FIXEDINFO$ equal to "".
  6432.  
  6433.  
  6434.          7.03 RSTRINFO ( DELFLAG% )
  6435.  
  6436.               Description: Restores the display area under the info-
  6437.               line.  This area was saved by a previous call to INFOLINE.
  6438.               If the info-line is not active RSTRINFO does nothing.
  6439.               (SEE: Examples - Info-line routines. )
  6440.  
  6441.               Argument:    DELFLAG% is set to 1 to deactivate the info-
  6442.               line.  If DELFLAG% = 1 the display area saved by routine
  6443.               INFOLINE is restored to the display.  An info-line will no
  6444.               longer be active.  If DELFLAG% = 0 the info-line remains
  6445.               active.  The saved display area is restored.  The saved
  6446.               display are remains in window memory, however.
  6447.               NOTE: THE SAVED DISPLAY AREA RESIDES IN WINDOW NUMBER 25.
  6448.               FUNCTION WAVAIL% CAN DETERMINE IF THE INFOLINE IS ACTIVE.
  6449.  
  6450.               EXAMPLE: IF WAVAIL%(25) = 0 ' The info-line is active.
  6451.                        IF WAVAIL%(25) = 1 ' the info-line is not active.
  6452.  
  6453.  
  6454.  
  6455.  
  6456.  
  6457.  
  6458.  
  6459.  
  6460.  
  6461.  
  6462.  
  6463.  
  6464.                                        94
  6465.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473.  
  6474.  
  6475.          -----------------------------------------------------------------
  6476.          ' Example: Info-line routines
  6477.          ' THIS EXAMPLE WILL NOT RUN AS THE CALLS TO INPTWIND, SCRLWIND,
  6478.          ' AND PULLDOWN ARE NOT COMPLETE.
  6479.  
  6480.          ' INFO-LINE TOP ROW = 25
  6481.          ' INFO-LINE LEFT COLUMN = 1
  6482.          ' INFO-LINE WIDTH = 80
  6483.          ' INFO-LINE COLOR = BLACK ON GRAY
  6484.          ' SAVES DISPLAY AREA ( ALL OF ROW 25 AS WIDTH = 80 )
  6485.  
  6486.          CALL INFOLINE ( 25, 1, 80, 112 )     ' INFO-LINE MADE ACTIVE
  6487.  
  6488.          CALL PRINTINFO ( "INPUT YOUR NAME" ) ' PRINT IN INFO-LINE
  6489.  
  6490.          CALL INPTWIND.......                 ' TO INPUT A NAME
  6491.  
  6492.          CALL RSTRINFO ( 0 )       ' DISPLAY AREA UNDER INFO-LINE IS
  6493.                                    ' RESTORED TO DISPLAY.  INFO-LINE
  6494.                                    ' REMAINS ACTIVE.
  6495.  
  6496.          ' **** USE SAME INFO-LINE FOR A SCROLL WINDOW.  IN THIS EXAMPLE
  6497.          ' **** THE INFO-LINE DISPLAYS THE SAME MESSAGE FOR ALL ENTRIES IN
  6498.          ' **** THE SCROLL WINDOW.
  6499.  
  6500.          CALL INFOFIXED ( "MAKE A SELECTION" )
  6501.  
  6502.          DIM INFO$(0)              ' MUST BE DIMENSIONED TO 0 TO DISPLAY
  6503.                                    ' THE FIXED INFO-STRING ONLY.
  6504.  
  6505.          CALL SCRLWIND ( LIST$(), INFO$(), .....  ' MAKE SCROLL WINDOW
  6506.  
  6507.          ' "MAKE A SELECTION" IS PRINTED IN INFO-LINE FOR ALL ENTRIES IN
  6508.          ' THE SCROLL WINDOW.  ROUTINE SCRLWIND INTERNALLY CALLS ROUTINE
  6509.          ' PRINTINFO TO PRINT IN THE INFO-LINE.
  6510.  
  6511.          CALL RSTRINFO ( 0 )       ' DISPLAY AREA UNDER INFO-LINE IS
  6512.                                    ' RESTORED TO DISPLAY.  INFO-LINE
  6513.                                    ' REMAINS ACTIVE.
  6514.  
  6515.          CALL INFOFIXED ( "" )     ' REMOVE FIXED INFO-STRING.
  6516.  
  6517.  
  6518.          ' **** USE SAME INFO-LINE FOR A SCROLL WINDOW.  PRINT A DIFFERENT
  6519.          ' **** MESSAGE FOR EACH ITEM IN THE SCROLL WINDOW.
  6520.  
  6521.          CALL INFOFIXED ( "Directions: " ) ' Set fixed info-string
  6522.  
  6523.          DIM INFO$(3)                      ' The fixed info-string plus
  6524.          INFO$(1) = "Save a file."         ' these elements of INFO$() will
  6525.          INFO$(2) = "Load a file."         ' print for the corresponding
  6526.          INFO$(4) = "Delete a file."       ' entries in the scroll window.
  6527.  
  6528.  
  6529.  
  6530.                                        95
  6531.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.          CALL SCRLWIND ( LIST$(), INFO$()..........
  6542.  
  6543.          ' ** The following will print in the info-line.
  6544.          ' "Directions: Save a file."  prints for scroll window entry 1.
  6545.          ' "Directions: Load a file."  prints for scroll window entry 2.
  6546.          ' "Directions: Save a file."  prints for scroll window entry 3.
  6547.  
  6548.          CALL RSTRINFO ( 0 )       ' DISPLAY AREA UNDER INFO-LINE IS
  6549.                                    ' RESTORED TO DISPLAY.  INFO-LINE
  6550.                                    ' REMAINS ACTIVE.
  6551.  
  6552.          ' **** USE THE SAME INFO-LINE FOR PULLDOWN WINDOWS.  THE FIXED
  6553.          ' **** INFO-STRING STILL EQUALS "Directions".
  6554.  
  6555.          DIM INFO$(20)                     ' The fixed info-string plus
  6556.          INFO$(1) = "Save a file."         ' these elements of INFO$() will
  6557.          INFO$(2) = "Load a file."         ' print for the corresponding
  6558.          INFO$(3) = "Delete a file."       ' entries in the scroll window.
  6559.  
  6560.          '...  DO UP TO THE 20TH ELEMENT OF INFO$
  6561.          '...
  6562.  
  6563.          ' NOTE: INFO$() MUST BE DIMENSIONED TO ZERO ( DIM INFO$(0) ). IF
  6564.          ' THE INFO-LINE IS NOT TO BE USED.  THE TEXT FOR THE INFO-LINE FOR
  6565.          ' THE MENUBAR ITEMS IS SET BY ROUTINE SETPULL.  INFO$() ONLY SETS
  6566.          ' THE TEXT FOR THE INFO-LINE FOR THE SELECTIONS IN THE PULLDOWN
  6567.          ' WINDOWS.
  6568.  
  6569.          CALL PULLDOWN ( INFO$()......
  6570.  
  6571.          ' ** The following will print in the info-line.
  6572.          ' "Directions: Save a file."  for pulldown window entry 1.
  6573.          ' "Directions: Load a file."  for pulldown window entry 2.
  6574.          ' "Directions: Save a file."  for pulldown window entry 3.
  6575.  
  6576.          CALL RSTRINFO ( 0 )       ' DISPLAY AREA UNDER INFO-LINE IS
  6577.                                    ' RESTORED TO DISPLAY.  INFO-LINE
  6578.                                    ' REMAINS ACTIVE.
  6579.  
  6580.  
  6581.          '*** USE SAME INFO-LINE WITH ROUTINE GETANS.  PROMPT IS PRINTED IN
  6582.          '*** INFO-LINE BY PRINTINFO.  GETANS DOES NOT PRINT A PROMPT. IT
  6583.          '*** ONLY WAITS FOR A REPLY.
  6584.  
  6585.          CALL PRINTINFO ( "(Y)es or (N)o ?" ) ' PROMPT USER FOR "Y" OR "N".
  6586.  
  6587.          CALL GETANS ("", "YN", ANS$, 100, 100, 112, 0 )
  6588.  
  6589.          ' GETANS COORDINATES ARE MEANINGLESS AS A PROMPT IS NOT PRINTED.
  6590.          ' COORDINATES MUST STILL BE WITHIN VALID RANGES.  THE BORDER
  6591.          ' DESIGNATION MUST BE SET TO ZERO OR GETANS WILL GENERATE A
  6592.          ' WINDOW.
  6593.  
  6594.  
  6595.  
  6596.                                        96
  6597.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6598.  
  6599.  
  6600.  
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607.          CALL RSTRINFO ( 1 )       ' DISPLAY AREA UNDER INFO-LINE RESTORED
  6608.                                    ' TO DISPLAY.
  6609.                                    ' *** AS ARGUMENT = 1 THE INFO-LINE IS
  6610.                                    ' NO LONGER ACTIVE.  INFOLINE MUST BE
  6611.                                    ' CALLED AGAIN TO MAKE IT ACTIVE.
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632.  
  6633.  
  6634.  
  6635.  
  6636.  
  6637.  
  6638.  
  6639.  
  6640.  
  6641.  
  6642.  
  6643.  
  6644.  
  6645.  
  6646.  
  6647.  
  6648.  
  6649.  
  6650.  
  6651.  
  6652.  
  6653.  
  6654.  
  6655.  
  6656.  
  6657.  
  6658.  
  6659.  
  6660.  
  6661.  
  6662.                                        97
  6663.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6664.  
  6665.  
  6666.  
  6667.  
  6668.  
  6669.  
  6670.  
  6671.  
  6672.  
  6673.                            MISCELLANEOUS ROUTINES
  6674.  
  6675.  
  6676.          8.00 DOSOUND
  6677.  
  6678.               Description: Makes the default sound, or sound as
  6679.               specified by a previous call to SETWIND.
  6680.  
  6681.               Arguments:    None.
  6682.  
  6683.  
  6684.          8.01 DISPLAYROWS%    ( NOTE: THIS IS A FUNCTION )
  6685.  
  6686.               Description: Returns the number of rows for the active
  6687.               display mode.  DISPLAYROWS% returns 25, 43 or 50
  6688.  
  6689.  
  6690.          8.02 PEEKASM& ( SEGMENT&, OFFSET&, NUMOFBYTES% )
  6691.          ( NOTE: THIS IS A FUNCTION WHICH RETURNS A LONG INTEGER )
  6692.  
  6693.               Description: Returns a value at the specified memory
  6694.               location.  Returns a one, two, three, or four byte value.
  6695.               PEEKASM& can be used to "PEEK" a one to four byte memory
  6696.               location.
  6697.  
  6698.               Arguments:   SEGMENT& is the segment ( DOS CONVENTION ) in
  6699.               memory where the value resides.
  6700.  
  6701.                            OFFSET& is the offset location from SEGMENT&
  6702.               for the value.
  6703.  
  6704.                            NUMOFBYTES% is the number of bytes in the
  6705.               value.  It may equal 1,2,3 or 4.  If NUNOFBYTE% does not
  6706.               equal 1,2,3 or 4 it defaults to one byte.
  6707.  
  6708.  
  6709.          8.03 GETCUR&
  6710.          ( NOTE: THIS IS A FUNCTION WHICH RETURNS A LONG INTEGER )
  6711.  
  6712.               Description:  Returns a long integer which represents the
  6713.               system cursor's size and position.
  6714.  
  6715.               Arguments:    None
  6716.  
  6717.               NOTE: BASIC RETAINS IT'S OWN RECORD OF THE CURSOR POSITION
  6718.               FOR SUBSEQUENT PRINT STATEMENTS.  THIS WILL NOT POSE A
  6719.               PROBLEM IF THE ROUTINES INCLUDED IN WINDOWS R-E-Z ARE USED
  6720.               FOR ALL SCREEN PRINTING
  6721.  
  6722.  
  6723.  
  6724.  
  6725.  
  6726.  
  6727.  
  6728.                                        98
  6729.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6730.  
  6731.  
  6732.  
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738.  
  6739.          8.04 SETCUR ( CURPOS& )
  6740.  
  6741.               Description: Restores the cursor size and position save by
  6742.               routine GETCUR&.
  6743.  
  6744.               Arguments:   CURPOS& is a long integer returned by a
  6745.               previous call to GETCUR&
  6746.  
  6747.               NOTE: BASIC RETAINS IT'S OWN RECORD OF THE CURSOR POSITION
  6748.               FOR SUBSEQUENT PRINT STATEMENTS.  THIS WILL NOT POSE A
  6749.               PROBLEM IF THE ROUTINES INCLUDED IN WINDOWS R-E-Z ARE USED
  6750.               FOR ALL SCREEN PRINTING
  6751.  
  6752.  
  6753.  
  6754.          8.05 CUROFF
  6755.  
  6756.               Description: Turns the system cursor off by disabling it's
  6757.               visibility.
  6758.  
  6759.               Arguments:    None
  6760.  
  6761.               NOTE: SAVE THE CURSOR SIZE AND POSITION VIA FUNCTION
  6762.               GETCUR& PRIOR TO USING THIS ROUTINE IF THE CURSOR SIZE
  6763.               AND POSITION ARE TO BE RESTORED AT A LATER TIME USING
  6764.               ROUTINE SETCUR.
  6765.  
  6766.  
  6767.  
  6768.          8.06 WTIMER&                       ( THIS IS A FUNCTION )
  6769.  
  6770.               Description: Returns the value of the system 1/18th
  6771.               second timer.   Can be used as an alternative delay to
  6772.               BASIC's SLEEP statement for periods less than one second.
  6773.               Accuracy is plus or minus 1/18th second.
  6774.  
  6775.               EXAMPLE:  DELAYS  5/18th seconds to 6/18th seconds.
  6776.  
  6777.               A& = WTIMER&               ' This will delay 0 to 1/18th
  6778.               WHILE WTIMER& = A& : WEND  ' second.
  6779.  
  6780.               FOR X% = 1 TO 5            ' This will delay 5/18th sec.
  6781.                A& = WTIMER&
  6782.                WHILE WTIMER& = A&: WEND
  6783.               NEXT
  6784.  
  6785.               Arguments:   None
  6786.  
  6787.  
  6788.  
  6789.  
  6790.  
  6791.  
  6792.  
  6793.  
  6794.                                        99
  6795.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.  
  6804.  
  6805.          8.07 TWOPOWEROF& ( N% )               ( THIS IS A FUNCTION )
  6806.  
  6807.               Description: Returns 2 to the "nth" power without referencing
  6808.               BASIC's floating point library.
  6809.  
  6810.               Argument:    N% is the exponent for the number 2.
  6811.  
  6812.  
  6813.          8.08 WVAL& ( NUMBER$ )                 ( THIS IS A FUNCTION )
  6814.  
  6815.               Description: Returns the value of a numeric string.
  6816.               Alternate for BASIC's VAL function.  Does not reference
  6817.               BASIC'S floating point library, however.
  6818.  
  6819.               Argument:    NUMBER$ is the numeric string to be converted
  6820.               to a long integer.
  6821.  
  6822.               NOTE:  SPACES IN NUMBER$ ARE IGNORED.  WVAL& REFERENCES
  6823.               FROM THE LAST CHARACTER TO THE FIRST CHARACTER OF NUMBER$.
  6824.               IF A MINUS SIGN ( - ) IS ENCOUNTERED IT IS ASSUMED TO BE
  6825.               THE START OF NUMBER$ AND WVAL& IS EXITED.  IF A NON-
  6826.               NUMERIC CHARACTER IS FOUND ( OTHER THAN A SPACE OR THE
  6827.               MINUS SIGN ) WVAL& RETURNS ZERO.  IF THE NON-NUMERIC
  6828.               CHARACTER PRECEDES A MINUS SIGN, IF ONE EXISTS, THE NON-
  6829.               NUMERIC CHARACTER IS IGNORED.
  6830.  
  6831.  
  6832.  
  6833.  
  6834.  
  6835.  
  6836.  
  6837.  
  6838.  
  6839.  
  6840.  
  6841.  
  6842.  
  6843.  
  6844.  
  6845.  
  6846.  
  6847.  
  6848.  
  6849.  
  6850.  
  6851.  
  6852.  
  6853.  
  6854.  
  6855.  
  6856.  
  6857.  
  6858.  
  6859.  
  6860.                                       100
  6861.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6862.  
  6863.  
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869.  
  6870.  
  6871.                        PROGRAM FORMAT FOR WINDOWS R-E-Z
  6872.  
  6873.           ** NOTE: ALL NUMERIC VALUES MUST BE INTEGERS FOR ALL **
  6874.              PROCEDURES EXCEPT DISKSIZE. ( EX: A%, B%, DEFINT A-F )
  6875.  
  6876.               1. LOAD QUICKBASIC WITH CORRECT LIBRARY.
  6877.  
  6878.                  - UNENHANCED VERSION:
  6879.                  EX: QB/L QBUNEN.QLB    ( QuickBASIC 4.50 )
  6880.                      QBX/L PDSUNEN.QLB  ( BASIC 7.1 - PDS )
  6881.                      VBDOS/L VBUNEN.QLB ( Visual BASIC for DOS )
  6882.  
  6883.                  - ENHANCED VERSION:
  6884.                  EX: QB/L QBALL.QLB     ( QuickBASIC 4.50 )
  6885.                      QBX/L PDSALL.QLB   ( BASIC 7.1 - PDS )
  6886.                      VBDOS/L VBALL.QLB  ( Visual BASIC for DOS )
  6887.  
  6888.               2. DECLARE ALL SUB-ROUTINES AND FUNCTIONS.
  6889.  
  6890.                  REM $INCLUDE: 'DECLARE.INC'
  6891.  
  6892.              ' 3. CALL SETWIND TO INITIALIZE WINDOW MEMORY, INPTINIT TO
  6893.              ' INITIALIZE INPUT ROUTINES.  TURN THE MOUSE ON IF IT EXISTS
  6894.  
  6895.                  CLS
  6896.                  CALL SETWIND(1,1,7,0,15)   'FAST WINDOWS
  6897.                                             'SOUND DEFAULTS TO "CLICK"
  6898.                                             'SHADOW COLOR = GRAY
  6899.                                             'HI INTENSITY IS OK
  6900.                                             'BRACKET COLOR = 15
  6901.  
  6902.                  CALL INPTINIT (1,1,1,1,1)  'DATE = MM-DD-YYYY
  6903.                                             'PERIOD AS DECIMAL POINT
  6904.                                             'CURSOR AT POSITION 1
  6905.                                             'BLANK ON 1ST KEY PRESSED
  6906.                                             'MAKE SOUND ON BAD KEY
  6907.  
  6908.                  JUNK% = MOUSEON (1)        'MOUSE IS ON IF JUNK% <> 0
  6909.  
  6910.              ' 4. CALL SETPULL IF PULLDOWN WINDOWS ARE USED
  6911.  
  6912.                  A%= 25
  6913.                  DIM PWIND$(A%)                    ' SET TEMPORARY
  6914.                                                    ' ARRAY
  6915.                  DIM PULLINFOLINE$(0)              ' INFO-LINE NOT USED
  6916.                  TEMP%=0
  6917.                  WHILE PWIND$(TEMP%) <> "ENDPULL"
  6918.                     TEMP% = TEMP% + 1              ' ALWAYS START AT 1
  6919.                     READ PWIND$(TEMP%)             ' READ DATA FOR
  6920.                  WEND                              ' PULLDOWN WINDOWS
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926.                                       101
  6927.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933.  
  6934.  
  6935.  
  6936.  
  6937.                  CALL SETPULL (1, 1, 80, PWIND$()) ' CALL SETPULL
  6938.                  ERASE PWIND$                      ' AND ERASE ARRAY
  6939.  
  6940.                  ' PULLDOWN WINDOW DATA
  6941.                  DATA THIS,,HELLO,JOE,***
  6942.                  DATA IS,,HOW,ARE,YOU,***
  6943.                  DATA A,,I,AM,FINE,***
  6944.                  DATA SAMPLE,,BYE,***
  6945.                  DATA ENDPULL
  6946.  
  6947.                  ON KEY(1) GOSUB PULL              ' MAKE THE F1 KEY
  6948.                                                    ' THE "HOT" KEY FOR
  6949.                                                    ' PULLDOWN WINDOWS
  6950.  
  6951.               '5. READ DATA FOR SCROLL WINDOW(S)
  6952.  
  6953.                  DIM LIST$(10)                     ' DIMENSION ARRAY
  6954.                  FOR X%= 1 TO 10                   ' AND READ SCROLL
  6955.                   READ LIST$(X%)                   ' WINDOW DATA
  6956.                  NEXT
  6957.  
  6958.                  DATA ONE, TWO, THREE, FOUR, FIVE  ' DATA FOR A SCROLL
  6959.                  DATA SIX, SEVEN, EIGHT, NINE, TEN ' WINDOW
  6960.  
  6961.  
  6962.               '6. SET UP MULTI-FIELD INPUT SCREEN(S)
  6963.                  CALL SETINPT( 1, 25, "12", 15 ) ' DEFINE SCREEN.
  6964.  
  6965.                  FOR X% = 1 TO 3
  6966.                    READ CODE%, TR%, LC%, WD%
  6967.                    CALL MAKEFIELD (1,X%,CODE%,TR%,LC%,WD%,7,7,7,"","",0,0,0)
  6968.                  NEXT
  6969.  
  6970.                  DATA 0,1,1,15
  6971.                  DATA 11007,3,1,40
  6972.                  DATA 108,5,1,10
  6973.  
  6974.  
  6975.              '7. ENTER THE PROGRAM
  6976.                  MAIN:
  6977.                  LOCATE 25, 1 :PRINT "PRESS F1"
  6978.                  KEY (1) ON                 ' TURN ON "HOT" KEY AT
  6979.               '  .                          ' APPROPRIATE SPOT IN
  6980.               '  .                          ' PROGRAM.
  6981.               '  .                          ' WAIT FOR F1 KEY.
  6982.                  GOTO MAIN
  6983.                  REM  PULL IS A SUB ROUTINE WHICH IS ENTERED VIA THE
  6984.                  REM  F1 KEY BEING PRESSED.  THIS SUB DISPLAYS THE
  6985.                  REM  PULLDOWN WINDOW AND WAITS FOR AN ITEM TO BE
  6986.                  REM  SELECTED FROM SAME.  IF THE ESC KEY IS PRESSED
  6987.                  REM  THE PROGRAM RESUMES EXECUTION WHERE IT WAS
  6988.                  REM  INTERRUPTED BY THE F1 KEY.  IF AN ITEM IS
  6989.  
  6990.  
  6991.  
  6992.                                       102
  6993.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  6994.  
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.                  REM  SELECTED A ROUTINE IS EXECUTED.  AFTER EXECUT-
  7004.                  REM  ION THE PROGRAM CONTINUES AT MAIN.
  7005.                  REM  THIS IS A SUGGESTION FOR A METHOD TO USE PULL-
  7006.                  REM  DOWN WINDOWS.  ALTERNATE METHODS MAY BE USED,
  7007.                  REM  SUCH AS CALL "PULLDOWN" AT START OF PROGRAM.
  7008.                  REM  AND NOT USING A HOT KEY.
  7009.  
  7010.                  PULL:
  7011.                  KEY (1) OFF
  7012.  
  7013.                  REM: MUST BE ON ONE LINE IN QB, QBX, VBDOS EDITOR.
  7014.                  CALL PULLDOWN (PULLINFOLINE$(), MENUITEM% , WINDITEM%, "E",
  7015.                                RKEY%, 112, 15, 11)
  7016.  
  7017.                  CALL RSTRPULL (1)            ' RESTORE AREA UNDER
  7018.                                               ' PULLDOWN WINDOW.
  7019.                  SELECT CASE MENUITEM%
  7020.  
  7021.                   CASE 1                      ' MENUBAR ITEM = THIS
  7022.                     SELECT CASE WINDITEM%
  7023.                       CASE 1                  ' HELLO
  7024.                '       .                      ' ROUTINE FOR HELLO
  7025.                '       .
  7026.                       CASE 2                  ' JOE
  7027.                '       .                      ' ROUTINE FOR JOE
  7028.                '       .
  7029.                     END SELECT
  7030.  
  7031.                   CASE 2                      ' MENUBAR ITEM = IS
  7032.                     SELECT CASE WINDITEM%
  7033.                       CASE 1                  ' HOW
  7034.                 '      .                      ' ROUTINE FOR HOW
  7035.                 '      .
  7036.                       CASE 2                  ' ARE
  7037.                 '      .                      ' ROUTINE FOR ARE
  7038.                 '      .
  7039.                       CASE 3                  ' YOU
  7040.                 '      .                      ' ROUTINE FOR YOU
  7041.                 '      .
  7042.                     END SELECT
  7043.  
  7044.                   CASE 3                      ' MENUBAR ITEM = A
  7045.                     SELECT CASE WINDITEM%
  7046.                       CASE 1                  ' I
  7047.                 '      .                      ' ROUTINE FOR I
  7048.                 '      .
  7049.                       CASE 2                  ' AM
  7050.                 '      .                      ' ROUTINE FOR AM
  7051.                 '      .
  7052.                       CASE 3                  ' FINE
  7053.                 '      .                      ' ROUTINE FOR FINE
  7054.                 '      .
  7055.  
  7056.  
  7057.  
  7058.                                       103
  7059.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.                     END SELECT
  7070.  
  7071.                   CASE 4                      ' MENUBAR ITEM = SAMPLE
  7072.                 '      .                      ' ROUTINE FOR SAMPLE
  7073.                 '      .                      ' ( OR BYE )
  7074.  
  7075.                   CASE ELSE
  7076.                      END                      ' WAS ESC
  7077.                 END SELECT
  7078.                     KEY (1) ON
  7079.                     RETURN MAIN                ' DONE WITH THE ROUTINE
  7080.                                                ' SELECTED FROM
  7081.                                                ' PULLDOWN WINDOWS
  7082.  
  7083.  
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.  
  7090.  
  7091.  
  7092.  
  7093.  
  7094.  
  7095.  
  7096.  
  7097.  
  7098.  
  7099.  
  7100.  
  7101.  
  7102.  
  7103.  
  7104.  
  7105.  
  7106.  
  7107.  
  7108.  
  7109.  
  7110.  
  7111.  
  7112.  
  7113.  
  7114.  
  7115.  
  7116.  
  7117.  
  7118.  
  7119.  
  7120.  
  7121.  
  7122.  
  7123.  
  7124.                                       104
  7125.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  
  7133.  
  7134.  
  7135.                                 EVENT TRAPPING
  7136.                                 --------------
  7137.  
  7138.          Additional library files have been included which allow event
  7139.          trapping ( SEE THE SECTION TITLED FILES ).
  7140.  
  7141.          These libraries may be used for programs which do not require
  7142.          event trapping also.  It is important to note, however, that
  7143.          additional code will be added to programs that are compiled from
  7144.          the QB/QBX/VBDOS environments, even if event trapping is not
  7145.          used.
  7146.  
  7147.          QuickBASIC 4.5, BASIC 7.1, and VBDOS detect event trapping
  7148.          capabilities in the *.QLB library and add the /W or /V switch to
  7149.          the compiler ( BC.EXE )  when modules are compiled from the
  7150.          programming environment; even if the modules do not use event
  7151.          trapping.  This adds extra code to the program and reduces it's
  7152.          speed.   If modules not are compiled and linked from the command
  7153.          line the /W and /V switches are not required for modules not
  7154.          using event trapping.  If modules will be compiled from the
  7155.          programming environment and event trapping is not used, use the
  7156.          libraries supplied which do not include event trapping.  THESE
  7157.          LIBRARIES ARE NOT SUPPLIED IN THE UNENHANCED VERSIONS.
  7158.  
  7159.          When event trapping is used care should be taken to assure that
  7160.          "exit keys" for routines do not conflict with keys trapped via
  7161.          event ( key ) trapping.  For example if the F1 key is used as an
  7162.          "exit key" for routine MULTINPT and the F1 key is trapped via
  7163.          event trapping two events will occur.  The event trapping routine
  7164.          will be executed for the F1 key pressed event, and routine
  7165.          MULTINPT will be executed as F1 is designated as an "exit key".
  7166.  
  7167.  
  7168.  
  7169.  
  7170.  
  7171.  
  7172.  
  7173.  
  7174.  
  7175.  
  7176.  
  7177.  
  7178.  
  7179.  
  7180.  
  7181.  
  7182.  
  7183.  
  7184.  
  7185.  
  7186.  
  7187.  
  7188.  
  7189.  
  7190.                                       105
  7191.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7192.  
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  
  7199.  
  7200.  
  7201.                                      FILES
  7202.  
  7203.               The following files are included with WINDOWS R-E-Z.
  7204.           The files included depend on the version you have received.
  7205.           Some files are for QuickBASIC 4.5, some are for BASIC 7.1,
  7206.           while others are for Visual BASIC for DOS.
  7207.  
  7208.           Library Files:
  7209.  
  7210.           - Library consisting of all assembly procedures.
  7211.  
  7212.            *  QBASM.LIB ---- For QuickBASIC 4.5
  7213.            *  PDSASM.LIB --  For BASIC 7.1
  7214.            *  VBASM.LIB  --  For Visual BASIC for DOS
  7215.  
  7216.           - QB/QBX/VBDOS assembly procedure quick libraries.
  7217.  
  7218.            *  QBASM.QLB ---- For QuickBASIC 4.5
  7219.            *  PDSASM.QLB --- For BASIC 7.+
  7220.            *  VBASM.QLB ---- For Visual BASIC for DOS
  7221.  
  7222.           - Library consisting of all assembly and BASIC procedures.
  7223.  
  7224.            *  QBALL.LIB ---- For QuickBASIC 4.5
  7225.            *  PDSALL.LIB --- For BASIC 7.1
  7226.            *  VBALL.LIB ---- For Visual BASIC for DOS
  7227.            *  QBTRAP.LIB --- For QB 4.5      ( allows event trapping )
  7228.            *  PDSTRAP.LI --- For BASIC 7.1   ( allows event trapping )
  7229.            *  VBTRAP,LIB --- For VB for DOS  ( allows event trapping )
  7230.           **  QBUNEN.LIB --- For QuickBASIC 4.5         ( unenhanced )
  7231.           **  PDSUNEN.LIB -- For BASIC 7.1              ( unenhanced )
  7232.           **  VBUNEN.LIB --- For Visual BASIC for DOS   ( unenhanced )
  7233.  
  7234.           - QB/QBX/VBDOS assembly and BASIC quick libraries.
  7235.  
  7236.            *  QBALL.QLB ---- For QuickBASIC 4.50
  7237.            *  PDSALL.QLB --- For BASIC 7.1
  7238.            *  VBALL.QLB ---- For Visual BASIC for DOS
  7239.            *  QBTRAP.QLB --- For QB 4.5      ( allows event trapping )
  7240.            *  PDSTRAP.QLB -- For BASIC 7.1   ( allows event trapping )
  7241.            *  VBTRAP.QLB --- For VB for DOS  ( allows event trapping )
  7242.           **  QBUNEN.QLB --- For QuickBASIC 4.5         ( unenhanced )
  7243.           **  PDSUNEN.QLB -- For BASIC 7.1              ( unenhanced )
  7244.           **  VBUNEN.QLB --- For Visual BASIC for DOS   ( unenhanced )
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.            * Not included with the unenhanced version of WINDOWS R-E-Z.
  7252.           ** Not included with the enhanced version of WINDOWS R-E-Z.
  7253.  
  7254.  
  7255.  
  7256.                                       106
  7257.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7258.  
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266.  
  7267.           - Library of all assembly and BASIC procedures without
  7268.             error detection or window status.  Program MUST be
  7269.             completely "debugged" before these are used.
  7270.  
  7271.            *  QBNER.LIB ---- For QuickBASIC 4.50
  7272.            *  PDSNER.LIB --- For BASIC 7.1
  7273.            *  VBNER.LIB ---- For Visual BASIC for DOS
  7274.            *  QBNETRP.LIB ---- For QB 4.50        ( allows event trapping )
  7275.            *  PDSNETRP.LIB --- For BASIC 7.1      ( allows event trapping )
  7276.            *  VBNETRP.LIB ---- For VB for DOS     ( allows event trapping )
  7277.  
  7278.           - QB/QBX/VBDOS no error quick libraries.
  7279.  
  7280.            *  QBNER.QLB ---- For QuickBASIC 4.50
  7281.            *  PDSNER.QLB --- For BASIC 7.1
  7282.            *  VBNER.QLB ---- For Visual BASIC for DOS
  7283.            *  QBNETRP.QLB ---- For QB 4.50        ( allows event trapping )
  7284.            *  PDSNETRP.QLB --- For BASIC 7.1      ( allows event trapping )
  7285.            *  VBNETRP.QLB ---- For VB for DOS     ( allows event trapping )
  7286.  
  7287.           Object Files:
  7288.  
  7289.            QB*.OBJ = QuickBASIC 4.5, PDS*.OBJ = BASIC 7.1, VB*.OBJ = VB DOS
  7290.  
  7291.            *  QBWIND.OBJ --- Object file of assembly windowing
  7292.            *  PDSWIND.OBJ    routines.
  7293.            *  VBWIND.OBJ     "                                    "
  7294.            *  QBINPT.OBJ --- Object file of assembly input routines.
  7295.            *  PDSINPT.OBJ    "                                    "
  7296.            *  VBINPT.OBJ     "                                    "
  7297.            *  QBDIR.OBJ ---- Object file of assembly directory
  7298.            *  PDSDIR.OBJ     routines.
  7299.            *  VBDIR.OBJ      "                                    "
  7300.            *  QBSCRL.OBJ --- Object file of assembly scroll
  7301.            *  PDSSCRL.OBL    routines
  7302.            *  VBSCRL.OBJ     "                                    "
  7303.            *  PDSALT.OBJ     Alternate memory management object file
  7304.            *  VBALT.OBJ      "                                    "
  7305.  
  7306.           Basic Files:
  7307.  
  7308.            *  INPTWIND.BAS - BASIC source code for routines in
  7309.            *  PULLDOWN.BAS   WINDOWS R-E-Z.
  7310.            *  SCROLL.BAS           "
  7311.            *  WIND_REZ.BAS         "
  7312.            *  DIRWIND.BAS          "
  7313.            *  QBMEM.BAS                  ( QuickBASIC 4.5 )
  7314.            *  PDSVBMEM.BAS               ( BASIC 7.1 / VBDOS )
  7315.  
  7316.  
  7317.            * Not included with the unenhanced version of WINDOWS R-E-Z.
  7318.           ** Not included with the enhanced version of WINDOWS R-E-Z.
  7319.  
  7320.  
  7321.  
  7322.                                       107
  7323.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  
  7331.  
  7332.  
  7333.          Demonstration files.
  7334.  
  7335.               DEMO.BAS ----- Source code for demonstration program.
  7336.               DEMPART2.BAS   Part two of demonstration program.
  7337.               MULTSAM1.BAS   Sample multi-field input program.
  7338.               MULTSAM2.BAS         "
  7339.               MULTSAM3.BAS         "
  7340.               SCRLRAND.BAS   Scroll through a random access file.
  7341.               MAKERAND.BAS   Sample random access database.
  7342.               SCRLISAM.BAS   Scroll through an ISAM table.
  7343.               MAKEISAM.BAS   Sample ISAM data file.
  7344.  
  7345.            NOTE:  All BASIC files except QBMEM.BAS, PDSMEM.BAS and
  7346.            VBMEM,BAS are the same for QuickBASIC 4.5, BASIC 7.1, and
  7347.            VBDOS.  All basic routines require the presence of the module
  7348.            WIND_REZ.BAS INPTWIND.BAS and ***MEM.BAS
  7349.  
  7350.           Other Files:
  7351.  
  7352.           **  WIND_REZ.DOC - This document.
  7353.            *  WIND_REZ.EXE - Self-extracting compressed documentation.
  7354.                              Un-compresses to WIND_REZ.DOC.
  7355.               SCRLFILE.DOC - Scroll through file documentation.
  7356.               DEMO.EXE ----- Demonstration program.
  7357.               PRNTDOT.BAT -- Batch file for printing WIND_REZ.DOC.
  7358.               PRNTLAS.BAT -- Batch file for printing WIND_REZ.DOC on a
  7359.                              HP compatible laser printer.
  7360.               DECLARE.INC -- INCLUDE file containing DECLARE
  7361.                              statements for all routines.
  7362.               ORDER.ME ----- Order form for WINDOWS R-E-Z.
  7363.               READ.ME  ----- Update information.
  7364.            *  QUICKREF.DOC - Quick reference guide.
  7365.            *  PRNTDOT2.BAT - Batch file for printing QUICKREF.DOC.
  7366.            *  PRNTLAS2.BAT - Batch file for printing QUICKREF.DOC on a
  7367.                              HP compatible laser printer.
  7368.  
  7369.  
  7370.  
  7371.  
  7372.  
  7373.  
  7374.  
  7375.  
  7376.  
  7377.  
  7378.  
  7379.  
  7380.  
  7381.  
  7382.  
  7383.            * Not included with the unenhanced version of WINDOWS R-E-Z.
  7384.           ** Not included with the enhanced version of WINDOWS R-E-Z.
  7385.  
  7386.  
  7387.  
  7388.                                       108
  7389.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.  
  7398.  
  7399.                                     Errors
  7400.  
  7401.           The following is a listing of the errors WINDOWS R-E-Z
  7402.           will detect.
  7403.  
  7404.           ERROR #       DESCRIPTION
  7405.           ------------------------------------------------------------
  7406.  
  7407.           ERROR 1       There is no active window.  SCRLWIND, RESAVE
  7408.                         CLRWIND, PRINTW, PRINTWHOT, LINEW, NEWCOLOR,
  7409.                         and BOXW require an active window.
  7410.  
  7411.  
  7412.           ERROR 2       SETWIND has not been called to initialize
  7413.                         window memory.  This error will also be reported
  7414.                         if the program uses a CLEAR statement and SETWIND
  7415.                         has not be called to re-initialize window
  7416.                         memory.
  7417.  
  7418.  
  7419.           ERROR 3       A window number has been specified which is
  7420.                         out of range for the calling routine.  Window
  7421.                         number 20 is the maximum window number for all
  7422.                         routines.  Window number 1 is the minimum
  7423.                         window number for SAVEWIND, DELWIND, RESAVE
  7424.                         and RSTRWIND.  Window number 0 is the minimum
  7425.                         window number for MAKEWIND and CHNGWIND.
  7426.  
  7427.  
  7428.           ERROR 4       The window will not fit on the screen or the
  7429.                         window is too small.  The left column plus the
  7430.                         window's width makes the window too wide or the
  7431.                         top row plus the number of rows makes the
  7432.                         window too tall.  The left column and top row
  7433.                         must be greater than 0.  The width and number
  7434.                         of rows must be greater than 2.  The left column
  7435.                         or row are out of permissible range.
  7436.  
  7437.                         GETANS makes a window with a width predicated
  7438.                         on the width of the prompt.
  7439.  
  7440.                         INPTWIND makes a window with a width based on
  7441.                         the length of the prompt plus the width of the
  7442.                         input field.  Input windows with < OK > and
  7443.                         < CANCEL > buttons require additional rows.
  7444.  
  7445.                         PULLDOWN windows have a width based on the
  7446.                         longest item in the pulldown window's list.
  7447.                         The number or rows in a pulldown window are
  7448.                         based on the number of selections and segmenting
  7449.                         lines in same.
  7450.  
  7451.  
  7452.  
  7453.  
  7454.                                       109
  7455.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7456.  
  7457.  
  7458.  
  7459.  
  7460.  
  7461.  
  7462.  
  7463.  
  7464.  
  7465.                         CHOICEWIND makes a window with a width based
  7466.                         on the longest line of text in it or the width of
  7467.                         the choices in it.  The length is based on the
  7468.                         number of lines of text in the choice window.
  7469.  
  7470.                         This error is reported for INPTWIND and GETANS
  7471.                         if no window is specified ( BORDER%=0 ) and the
  7472.                         width of the prompt and/or field will not fit on
  7473.                         the screen.
  7474.  
  7475.  
  7476.           ERROR 5       The border designation is not valid for the
  7477.                         calling routine.  GETANS does not allow title
  7478.                         windows.  PULLDOWN does not allow title
  7479.                         windows and only allows right-bottom shadows.
  7480.                         SEE THE BORDER DESIGNATION CHART.
  7481.  
  7482.  
  7483.           ERROR 6       A request was made to CHNGWIND to make the
  7484.                         active window a non-existent window or a
  7485.                         window saved via SAVEWIND.  The active window
  7486.                         can only be a window generated by MAKEWIND.
  7487.  
  7488.  
  7489.           ERROR 8       An window specified in a call to MAKEWIND or
  7490.                         SAVEWIND previously existed.  A window must be
  7491.                         deleted via a call to DELWIND or RSTRWIND
  7492.                         before the number assigned to it can be used
  7493.                         again.  This error will not be reported for
  7494.                         window number 0 as it is not saved.
  7495.  
  7496.  
  7497.           ERROR 9       A call to INPTINIT was not made to initialize
  7498.                         input memory.  INPTINIT must be called once in
  7499.                         every program prior to calling routines INPTWIND
  7500.                         MULTINPT, CHOICEWIND, CHOICEBAR or SCRLWIND with
  7501.                         buttons.  If a CLEAR statement is executed,
  7502.                         INPTINIT must be called again.
  7503.  
  7504.  
  7505.           ERROR 11      A bad row number was specified in a call to
  7506.                         PRINTW, PRINTWHOT, LINEW or BOXW.  The row
  7507.                         number must be greater than 0.  PRINTW and
  7508.                         PRINTWHOT allow print on the bottom border.
  7509.                         LINEW does not.  The string specified in a call
  7510.                         to PRINTW or PRINTWHOT will not fit in the
  7511.                         window due to it's length or it's left column
  7512.                         ( start print ) position.  The entire box in a
  7513.                         call to BOXW will not fit in the active window.
  7514.                         BOXW does not allow row or column value to
  7515.                         equal 100 to center then box.
  7516.  
  7517.  
  7518.  
  7519.  
  7520.                                       110
  7521.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7522.  
  7523.  
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.           ERROR 12      The position or width of the info-line in a call
  7532.                         to INFOLINE or PRINTINFO is illegal.
  7533.  
  7534.                         The position or width of the menubar in a call
  7535.                         to SETPULL or PULLDOWN is illegal.
  7536.  
  7537.                         The position or width of the choicebar in a call to
  7538.                         CHOICEBAR is illegal.
  7539.  
  7540.                         The left column position is out of range.  A
  7541.                         combination of the left column position plus the
  7542.                         specified width will not allow the info-line,
  7543.                         menubar or choicebar to fit on one line.  The
  7544.                         menubar selection or choicebar selections will
  7545.                         not fit in the specified width.  The minimum row
  7546.                         position, left column position and left column
  7547.                         plus the width are checked on the calls to INFOLINE
  7548.                         SETPULL, and CHOICEBAR.  The maximum row position
  7549.                         is checked on the calls to PRINTINFO, PULLDOWN and
  7550.                         CHOICEBAR and is based on the active number of
  7551.                         display rows at the time of the call.
  7552.  
  7553.  
  7554.           ERROR 13      This is an array dimension error.
  7555.  
  7556.                         The array ( LIST$() ) in a call to SCRLWIND
  7557.                         has a lower dimension greater than 1 or an
  7558.                         upper dimension less then the number of entries
  7559.                         ( ENTRIES% ) in the list.
  7560.  
  7561.                         The array ( RTRN$() ) specified in a call to
  7562.                         MULTINPT has a lower dimension of greater than
  7563.                         one or an upper dimension less than the number
  7564.                         of fields in the multi-field input screen.
  7565.  
  7566.  
  7567.           ERROR 14      A routine was called with an illegal number of
  7568.                         selections.
  7569.  
  7570.                         The number of entries ( selections ) in a call
  7571.                         to SCRLWIND must be greater than one.
  7572.  
  7573.                         The number of selections in an "EXTENDED" scroll
  7574.                         window exceeds the number or interior rows in the
  7575.                         scroll window.
  7576.  
  7577.                         The number of selections in a pulldown window's
  7578.                         menubar, set by routine SETPULL must equal one to
  7579.                         ten.  Routine SETPULL attempted to make a pulldown
  7580.                         window with no selections in same.  This consecutive
  7581.                         "***"'s may be in the data stream.
  7582.  
  7583.  
  7584.  
  7585.  
  7586.                                       111
  7587.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7588.  
  7589.  
  7590.  
  7591.  
  7592.  
  7593.  
  7594.  
  7595.  
  7596.  
  7597.                         The number of choices in a call to CHOICEWIND or
  7598.                         CHOICEBAR must equal one to ten.
  7599.  
  7600.  
  7601.           ERROR 15      The minimum size of a scroll window when routine
  7602.                         SCRLWIND is called not wide enough or does not
  7603.                         contain enough rows.  The size varies if < OK >
  7604.                         and < CANCEL > buttons are used. See the descrip-
  7605.                         tion for routine SCRLWIND for details.
  7606.  
  7607.  
  7608.           ERROR 16      At least one of the strings in the list for a
  7609.                         scroll window ( SCRLWIND ) will not fit in the
  7610.                         window, allowing for a space on either side of
  7611.                         the string. ( non-virtual scroll windows only )
  7612.  
  7613.  
  7614.           ERROR 21      The screen number specified in a call to SETINPT,
  7615.                         MAKEFIELD, or MULTINPT does not equal one to 10.
  7616.  
  7617.                         The screen number specified in a call to MULTINPT
  7618.                         or MAKEFIELD has not been defined by a previous
  7619.                         call to SETINPT.  MULTINPT has been called with
  7620.                         no fields previously defined by MAKEFIELD.
  7621.  
  7622.  
  7623.           ERROR 22      A bad field number has been specified.
  7624.  
  7625.                         Routine MAKEFIELD may use field numbers one to
  7626.                         150.  The field, however, must not be greater than
  7627.                         the highest previously defined field number plus
  7628.                         one.
  7629.  
  7630.                         The TOFLD% argument in a call to MULTINPT is
  7631.                         attempting to access a field which does not exist
  7632.                         for the specified MULTI-FIELD input screen
  7633.  
  7634.                         The FROMFLD% argument in a call to MULTINPT does
  7635.                         not equal zero or a valid field number for the
  7636.                         specified MULTI-FIELD input screen.
  7637.  
  7638.  
  7639.           ERROR 23      The color of a field in a call to INPTWIND or
  7640.                         MAKEFIELD equals zero.  This includes the field's
  7641.                         inactive color, active color, or mouse active
  7642.                         color in a call to MAKEFIELD.
  7643.  
  7644.  
  7645.  
  7646.  
  7647.  
  7648.  
  7649.  
  7650.  
  7651.  
  7652.                                       112
  7653.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7654.  
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.  
  7663.           ERROR 24      The field code in INPTWIND does not consist of
  7664.                         legal characters. ("0","1","2","3","4","5","6",
  7665.                          "A","L","U","D","P0","P1","P2","P3","P4","P5,
  7666.                         "P6, "R" or "RP" )
  7667.  
  7668.                         The field code in a call to MAKEFIELD is illegal.
  7669.                         SEE THE FIELD CODE CHART IN THE APPENDIX.
  7670.  
  7671.  
  7672.           ERROR 25      The requested width of in input field in
  7673.                         INPTWIND or MAKEFIELD is out of range.  The
  7674.                         maximum width is 15 for numeric fields. The
  7675.                         minimum width for a numeric field, 0 to 6
  7676.                         decimal places, is the number decimal places
  7677.                         plus one.  The width for a date field must be
  7678.                         eight or ten.  The minimum width for a alpha-
  7679.                         numeric field is one. The maximum width is
  7680.                         79.  The maximum width for windowed fields in
  7681.                         routine INPTWIND depends on the windows
  7682.                         location, and the use of buttons.
  7683.  
  7684.  
  7685.           ERROR 26      The left column position plus the width of a
  7686.                         field defined in a call to MAKEFIELD will not
  7687.                         allow the field to fit on the screen.  The row
  7688.                         or column position is less than one.  The row
  7689.                         position of a field is greater than the display
  7690.                         length specified by the previous call to
  7691.                         SETINPT.
  7692.  
  7693.  
  7694.           ERROR 27      The number of characters in a restrict string
  7695.                         for an individual field defined in a call to
  7696.                         MAKEFIELD is greater than 255.
  7697.  
  7698.  
  7699.           ERROR 28      The cumulative total of restrict characters
  7700.                         for all fields for a multi-field input screen
  7701.                         defined via MAKEFIELD is greater than 1023.
  7702.  
  7703.  
  7704.           ERROR 29      The screen length when MULTINPT was called was
  7705.                         not the same as specified when the multi-field
  7706.                         input screen was defined by SETINPT.
  7707.  
  7708.                         The screen length specified in a call to SETINPT
  7709.                         was not 25, 43, or 50.
  7710.  
  7711.  
  7712.           ERROR 30      All fields defined by MAKEFIELD are protected
  7713.                         fields.  No input is possible.  This error is
  7714.                         detected when MULTINPT is called.
  7715.  
  7716.  
  7717.  
  7718.                                       113
  7719.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7720.  
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726.  
  7727.  
  7728.  
  7729.                                   APPENDIX I
  7730.                             Color Attribute Chart
  7731.  
  7732.           ATTRIBUTE                  BACKGROUND            FOREGROUND
  7733.  
  7734.           START     END
  7735.  
  7736.           0  ------ 15               BLACK                  NORMAL
  7737.           16 ------ 31               BLUE                   NORMAL
  7738.           32 ------ 47               GREEN                  NORMAL
  7739.           48 ------ 63               CYAN                   NORMAL
  7740.           64 ------ 79               RED                    NORMAL
  7741.           80 ------ 95               MAGENTA                NORMAL
  7742.           96 ------ 111              BROWN                  NORMAL
  7743.           112 ----- 127              LIGHT GRAY             NORMAL
  7744.           128 ----- 143              BLACK                  FLASHING
  7745.           144 ----- 159              BLUE                   FLASHING
  7746.           160 ----- 175              GREEN                  FLASHING
  7747.           176 ----- 191              CYAN                   FLASHING
  7748.           192 ----- 207              RED                    FLASHING
  7749.           208 ----- 223              MAGENTA                FLASHING
  7750.           224 ----- 239              BROWN                  FLASHING
  7751.           240 ----- 255              LIGHT GRAY             FLASHING
  7752.           -----------------------------------------------------------
  7753.           OFFSET FROM START                                 FOREGROUND
  7754.  
  7755.           0                                                 BLACK
  7756.           1                                                 BLUE
  7757.           2                                                 GREEN
  7758.           3                                                 CYAN
  7759.           4                                                 RED
  7760.           5                                                 MAGENTA
  7761.           6                                                 BROWN
  7762.           7                                                 LIGHT GRAY
  7763.           8                                                 DARK GRAY
  7764.           9                                                 LIGHT BLUE
  7765.           10                                                LIGHT GREEN
  7766.           11                                                LIGHT CYAN
  7767.           12                                                LIGHT RED
  7768.           13                                                LIGHT MAGENTA
  7769.           14                                                YELLOW
  7770.           15                                                WHITE
  7771.  
  7772.  
  7773.           EXAMPLE: If the attribute = 242 then the background color is
  7774.                    light gray and the foreground flashes.  The offset
  7775.                    from start = 242 - 240 or 2, so the foreground color
  7776.                    is green.
  7777.  
  7778.           NOTE: GETANS and SCRLWIND allow a flashing border only.
  7779.           CHNGPULL, PULLDOWN, AND MULTINPT will not allow a flashing
  7780.           border or text.
  7781.  
  7782.  
  7783.  
  7784.                                       114
  7785.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7786.  
  7787.  
  7788.  
  7789.  
  7790.  
  7791.  
  7792.  
  7793.  
  7794.  
  7795.                                    APPENDIX II
  7796.                              MAKEFIELD code chart
  7797.  
  7798.           The code for each field can be up to five digits long.  The
  7799.           digits are numbered 5,4,3,2 and 1, with 1 being the least
  7800.           significant digit and 5 the most significant digit.
  7801.  
  7802.           DIGIT NUMBER -------  5  4  3  2  1
  7803.  
  7804.           EXAMPLE CODE% ------  2  1  0  1  6
  7805.  
  7806.           - Digits 1 and 2 set the field type and can be:
  7807.  
  7808.           00  ------ Numeric - no decimal places.
  7809.           01 to 06 - Numeric - 1 to 6 decimal places
  7810.           10 ------- Numeric - no decimal places - padded with leading
  7811.                      zeros.
  7812.           11 to 16 - Numeric - 1 to 6 decimal places - padded with
  7813.                      leading zeros.
  7814.           30 ------- Numeric - real number.
  7815.           40 ------- Numeric - real number - padded with leading zeros.
  7816.  
  7817.           07 ------- Alpha/numeric
  7818.           17 ------- Alpha/numeric -- UPPER CASE
  7819.           27 ------- Alpha/numeric -- lower case
  7820.  
  7821.           08 ------- Date   ( Type determined by call to INPTINIT. )
  7822.  
  7823.           - Digit 3 sets a protected field ( No entry ) and can be:
  7824.  
  7825.           0 -------- Field is NOT protected.
  7826.           1 -------- Field is protected. ( or "mouse only selectable" )
  7827.  
  7828.           - Digit 4 sets an Auto-advance field and can be:
  7829.  
  7830.           0 -------- Field is NOT Auto-advance.
  7831.           1 -------- Field is Auto-advance.
  7832.  
  7833.           - Digit ---- 5 sets an Auto-exit field and can be:
  7834.  
  7835.           0 -------- Field is NOT Auto-exit.
  7836.           1 -------- Field is Auto-exit.
  7837.           3 -------- Field is Fixed-choice. ( also auto-exit  ). Use
  7838.                      for buttons, fixed choice, or "mouse selectable".
  7839.  
  7840.           EXAMPLE: IF CODE% = 11016 the field is decimal with padded
  7841.                    zero's, Auto-advance, and Auto-exit.
  7842.  
  7843.           NOTE: If digit 3 is set to 1 (protected) digits 4 and 5 are
  7844.                 ignored. EXCEPTION: If the field code = 30100 the field
  7845.                 is a "mouse only selectable field"
  7846.  
  7847.  
  7848.  
  7849.  
  7850.                                       115
  7851.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7852.  
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.                                   APPENDIX III
  7862.  
  7863.                                Border Designations
  7864.  
  7865.         DIGIT NUMBER         3    2    1
  7866.         EXAMPLE BORDER%      1    2    1       ( 121 )
  7867.  
  7868.         Digit 1 = Border     Digit 2 = Shadow   Digit 3 = Title Box
  7869.  
  7870.         Example (121) = title box/ left bottom shadow/ single line border
  7871.         ------------------------------------------------------------------
  7872.                     :---Border---:          :------- Shadow -----------:
  7873.           Border    Single  Double   Title  Right   Left    Left  Right
  7874.           Value     Line    Line     Box    Bottom  Bottom  Top   Top
  7875.  
  7876.               0            No border, title box, or shadow
  7877.               1     X
  7878.               2             X
  7879.              10                              X
  7880.              11     X                        X
  7881.              12             X                X
  7882.              20                                     X
  7883.              21     X                               X
  7884.              22             X                       X
  7885.              30                                             X
  7886.              31     X                                       X
  7887.              32             X                               X
  7888.              40                                                    X
  7889.              41     X                                              X
  7890.              42             X                                      X
  7891.  
  7892.             100                       X
  7893.             101     X                 X
  7894.             102             X         X
  7895.             110                       X      X
  7896.             111     X                 X      X
  7897.             112             X         X      X
  7898.             120                       X             X
  7899.             121     X                 X             X
  7900.             122             X         X             X
  7901.             130                       X                     X
  7902.             131     X                 X                     X
  7903.             132             X         X                     X
  7904.             140                       X                            X
  7905.             141     X                 X                            X
  7906.             142             X         X                            X
  7907.           -------------------------------------------------------------------
  7908.           See individual routines for restrictions.
  7909.  
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.                                       116
  7917.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7918.  
  7919.  
  7920.  
  7921.  
  7922.  
  7923.  
  7924.  
  7925.  
  7926.  
  7927.                                APPENDIX IV
  7928.  
  7929.                            GETAKEY CODE VALUES
  7930.  
  7931.           GETAKEY%       Key(s)
  7932.  
  7933.           1 to 255       The equivalent key which produces the
  7934.                          corresponding ASCII/IBM code.
  7935.                          ( 65 = A, 66 = B etc. )
  7936.  
  7937.           15104          F1
  7938.           15360          F2
  7939.           15616          F3
  7940.           15872          F4
  7941.           16128          F5
  7942.           16384          F6
  7943.           16640          F7
  7944.           16896          F8
  7945.           17152          F9
  7946.           17408          F10
  7947.           18432          UP ARROW
  7948.           20480          DOWN ARROW
  7949.           19200          LEFT ARROW
  7950.           19712          RIGHT ARROW
  7951.           18688          PGUP
  7952.           20736          PGDN
  7953.           18176          HOME
  7954.           20224          END
  7955.           20992          INSERT
  7956.           21248          DELETE
  7957.           29952          CTRL-END
  7958.           30464          CTRL-HOME
  7959.  
  7960.           NOTE: THIS LIST IS NOT ALL INCLUSIVE.  IT DOES PROVIDE
  7961.           VALUES FOR COMMON KEYS OR KEY COMBINATIONS.
  7962.  
  7963.           To find the values for other keys or key combinations this
  7964.           small program can be used.  Press ESC to end the program.
  7965.  
  7966.           DECLARE FUNCTION GETAKEY%%
  7967.  
  7968.           DO
  7969.             DO
  7970.               A%= GETAKEY%
  7971.             LOOP WHILE A% = 0
  7972.             PRINT A%
  7973.           LOOP WHILE A% <> 27
  7974.           END
  7975.  
  7976.           As a key or key combination is pressed the corresponding
  7977.           value will print on the screen.
  7978.  
  7979.  
  7980.  
  7981.  
  7982.                                       117
  7983.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  7984.  
  7985.  
  7986.  
  7987.  
  7988.  
  7989.  
  7990.  
  7991.  
  7992.  
  7993.                                UPDATE POLICIES
  7994.                                ---------------
  7995.  
  7996.          Within 45 days of the release of a new major version update
  7997.          of WINDOWS R-E-Z registered users will receive the following.
  7998.  
  7999.          1. All users registered within 45 days of the release of a new
  8000.             major version update will receive the update free.
  8001.  
  8002.          2. All registered users of the previous version will receive
  8003.             an update notice with an opportunity to update to the new
  8004.             version at a reduced update price.  The reduced update fee
  8005.             from version 5.10 to version 6.00 is $17.50 + $2.50
  8006.             shipping and handling.
  8007.  
  8008.          3. All other users who have elected to update via the two
  8009.             previous update notices will receive an update notice and
  8010.             may update at the regular update price.  The regular update
  8011.             fee to version 6.00 is $22.50 + $2.50 shipping and handling.
  8012.  
  8013.          4. Users who have not registered for the previous version or
  8014.             have not updated via the two previous update notices will
  8015.             not receive an update notice.  These users may update at the
  8016.             regular update price.  They will, however, have to upgrade
  8017.             by securing an order form by uploading the un-enhanced
  8018.             version.
  8019.  
  8020.  
  8021.          Major updates, to date, include versions 3.00, 4.00, 5.00 and
  8022.          version 6.00.
  8023.  
  8024.          Minor updates, to date, include versions 3.10, 3.20, 3.30
  8025.          3.40, 3.50, 3.60, 4.10, 4.20 and version 5.10.  As changes in
  8026.          minor updates are minimal, update notices are not provided for
  8027.          same.
  8028.  
  8029.  
  8030.  
  8031.  
  8032.  
  8033.  
  8034.  
  8035.  
  8036.  
  8037.  
  8038.  
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.  
  8047.  
  8048.                                       118
  8049.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  8050.  
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058.  
  8059.                                  RESTRICTIONS
  8060.  
  8061.           ------------------------------------------------------------
  8062.                               UNENHANCED LIBRARY
  8063.  
  8064.                    THE UNENHANCED LIBRARY IS OFFERED ON A TRIAL BASIS.
  8065.            IT MAY BE USED FOR EVALUATION.  EXECUTABLE PROGRAMS MADE
  8066.            FROM THE UNENHANCED LIBRARY MAY NOT BE DISTRIBUTED.  IF YOU
  8067.            DECIDE THE ROUTINES ARE USEFUL, REGISTRATION MAY BE
  8068.            ACCOMPLISHED BY VIRTUE OF SECURING THE ENHANCED VERSION.
  8069.            THE UNENHANCED LIBRARY MAY NOT BE ALTERED.  THE UNENHANCED
  8070.            LIBRARY MAY BE DISTRIBUTED, PROVIDED IT IS DISTRIBUTED WITH
  8071.            ALL OF THE FILES INCLUDED IN QWEZ61.ZIP, PWEZ61.ZIP OR
  8072.            VWEZ61.ZIP.
  8073.  
  8074.                   THE FILES, QWEZ61.ZIP, PWEZ61.ZIP, OR VWEZ61.ZIP MAY BE
  8075.            UP-LOADED IN THEIR ENTIRETY TO ANY PUBLIC OR PRIVATE BULLETIN
  8076.            BOARD.  INDIVIDUAL FILES NOT BE UP-LOADED.
  8077.  
  8078.           ------------------------------------------------------------
  8079.                                 ENHANCED VERSION
  8080.  
  8081.                  ALL OF THE SOURCE CODE, OBJECT CODE, AND LIBRARIES
  8082.            INCLUDED IN WINDOWS R-E-Z IS COPYRIGHTED.  COPYING AND
  8083.            DISTRIBUTING ANY OF THE MATERIAL IS PROHIBITED.  PROGRAMS
  8084.            MADE USING ANY OF THE PROCEDURES FROM WINDOWS R-E-Z IN THE
  8085.            EXECUTABLE (.EXE ) FORM MAY BE DISTRIBUTED FREELY BY
  8086.            ORIGINAL PURCHASERS.
  8087.  
  8088.           ------------------------------------------------------------
  8089.                                 COPYRIGHT WARNING
  8090.  
  8091.                  EXTRANEOUS CODE HAS BEEN INSERTED IN THE LIBRARY
  8092.            FILES.   ANY PROGRAM MADE USING THE LIBRARY FILES IS
  8093.            DISTINGUISHABLE AS ORIGINATING FROM WINDOWS R-E-Z.  CONNECT
  8094.            SOFTWARE WILL TAKE APPROPRIATE ACTION IF COPYRIGHT
  8095.            INFRINGEMENT IS DISCOVERED.
  8096.  
  8097.           ------------------------------------------------------------
  8098.                                    DISCLAIMER
  8099.  
  8100.               ANY LOSS INCURRED FROM THE USE OF THE PROCEDURES CON-
  8101.           TAINED IN WINDOWS R-E-Z, OR ANY LOSS BELIEVED TO BE CAUSED
  8102.           FROM THE PROCEDURES CONTAINED IN WINDOWS R-E-Z IS NOT THE
  8103.           RESPONSIBILITY OF CONNECT SOFTWARE.  USERS OF WINDOWS R-E-Z
  8104.           ASSUME FULL RESPONSIBILITY FOR THE USE OF ANY PROCEDURES
  8105.           CONTAINED WITHIN.
  8106.           ------------------------------------------------------------
  8107.  
  8108.  
  8109.  
  8110.  
  8111.  
  8112.  
  8113.  
  8114.                                       119
  8115.        Copyright(c) 1988-93 - By: CONNECT Software - All rights reserved.
  8116.  
  8117.  
  8118.  
  8119.